Чтение двоичного вывода внешней программы в Common Lisp

Я пытаюсь запустить внешнюю программу в SBCL и записать ее вывод. Результатом являются двоичные данные (изображение в формате png), в то время как SBCL настаивает на интерпретации их как строк.

Я пробовал несколько способов, как

(trivial-shell:shell-command "/path/to/png-generator" :input "some input")

(with-input-from-string (input "some input")
  (with-output-to-string (output)
    (run-program "/path/to/png-generator" () :input input :output output))


(with-input-from-string (input "some input")
  (flexi-streams:with-output-to-sequence (output)
    (run-program "/path/to/png-generator" () :input input :output output))

Но я получаю такие ошибки, как

Illegal :UTF-8 character starting at byte position 0.

Мне кажется, что SBCL пытается интерпретировать двоичные данные как текст и декодировать их. Как мне изменить это поведение? Меня интересует только получение вектора октетов.

Изменить: так как это не ясно из текста выше, я хотел бы добавить, что, по крайней мере, в случае flexi-stream, тип элемента потока являетсяflexi-streams:octect (который является(unsigned-byte 8)). Я бы ожидал, по крайней мере, в этом случаеrun-program читать сырые байты без особых проблем. Вместо этого я получаю сообщение какDon't know how to copy to stream of element-type (UNSIGNED-BYTE 8)

Ответы на вопрос(3)

Ваш ответ на вопрос