1

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" が端末に表示され、その後にシェル プロンプト "$" が表示されることを意味します。では、printf はテキスト "hello" をどこに出力するのでしょうか?

*standard-output* で `finish-output'、`force-output' を試しましたが、うまくいきません。

4

1 に答える 1