Tôi đang cố gắng chạy một chương trình bên ngoài trong SBCL và nắm bắt đầu ra của nó. Đầu ra là dữ liệu nhị phân (hình ảnh png), trong khi SBCL nhấn mạnh việc diễn giải nó dưới dạng chuỗi.Đọc đầu ra nhị phân của một chương trình bên ngoài trong Common Lisp
Tôi đã thử một số cách khác nhau, như
(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))
Nhưng tôi nhận được lỗi như
Illegal :UTF-8 character starting at byte position 0.
Dường như với tôi rằng SBCL đang cố gắng để giải thích các dữ liệu nhị phân như một văn bản và giải mã nó . Làm cách nào để thay đổi hành vi này? Tôi chỉ quan tâm đến việc có được một vec tơ octet.
Chỉnh sửa: Vì nó không rõ ràng từ văn bản ở trên, tôi muốn thêm rằng ít nhất là trong trường hợp của dòng flexi, loại phần tử của luồng là flexi-streams:octect
(là (unsigned-byte 8)
). Tôi mong đợi ít nhất trong trường hợp này là run-program
để đọc các byte thô mà không có nhiều vấn đề. Thay vào đó, tôi nhận được thông báo như Don't know how to copy to stream of element-type (UNSIGNED-BYTE 8)
Có, điều này dường như hoạt động, cảm ơn bạn rất nhiều! Trong mọi trường hợp tôi không chắc chắn vấn đề nằm ở đâu. Tôi có nghĩa là, bằng cách sử dụng một dòng tập tin như đầu ra hoạt động tốt, do đó, vấn đề không hoàn toàn trong chương trình chạy, mà là trên sự tương tác giữa một dòng chuỗi và chạy chương trình. Nhưng tôi hy vọng rằng việc sử dụng với đầu ra-to-sequence sẽ hoạt động tốt. Dù sao thì ít nhất tôi cũng có một giải pháp. Cảm ơn một lần nữa. –
@MarcoRighele: trên SO, nếu bạn quan tâm để chấp nhận câu trả lời, nó đánh dấu câu hỏi như được trả lời trong hệ thống SO - đó là dấu kiểm của các nút bỏ phiếu. –
Nếu bạn đang chờ xem liệu giải pháp kia có đang hoạt động hay không. Trong mọi trường hợp tôi thích cái này vì nó có ít phụ thuộc bên ngoài hơn. –