是否有特定方法在CL中读取设备文件?我在SBCL中尝试以下代码,但它似乎不起作用:
(defparameter modem #p"/dev/ttyUSB2")
(defun read-modem()
(with-open-file (fd modem :direction :io :if-exists :append)
(loop while (peek-char nil fd) do
(format t "~A" (read-line fd))
(finish-output fd))))
我知道有输出,因为cat /dev/ttyUSB2
显示了它。
答案 0 :(得分:2)
我想,你需要从二进制文件中读取它们。例如,这是我从/dev/urandom
读到的内容:
> (with-open-file (fd "/dev/urandom" :direction :io :if-exists :append
:element-type 'unsigned-byte)
(read-byte fd))
161
答案 1 :(得分:2)
我认为你的问题在于缓冲。
我不认为你可以在CL open
中关闭它,所以我担心你必须使用sb-unix:unix-open
和sb-unix:unix-read
。