从设备文件中读取

时间:2015-02-24 17:23:33

标签: common-lisp sbcl

是否有特定方法在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显示了它。

2 个答案:

答案 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-opensb-unix:unix-read