我碰巧遇到了通过 cffi 从 SBCL 调用 C printf 函数的问题。问题是当我调用 printf 函数时,我找不到输出文本,只是在 REPL 上显示 printf 函数的返回值。但是当我退出 SBCL 时,输出文本会神奇地出现在终端上。
$ sbcl
* (ql:quickload :cffi)
* (cffi:foreign-funcall "printf" :string "hello" :int)
;;=> 5
* (quit)
hello$
最后一行,“hello$”表示当从 SBCL 退出时,文本“hello”出现在终端上,后面跟着 shell 提示符“$”。那么 printf 将文本“hello”打印到哪里呢?
我在 *standard-output* 上尝试了 `finish-output'、`force-output' 但这不起作用。