Gaucheにはかなり豊富な入出力ポートを扱う手続きが用意されている。 これらを使った簡単なサンプルをまとめていこう。
(define (p) (print "HELLO"))
のような印字を行う関数の印字出力を霞め取るのに文字列ポートが使える。
(with-output-to-string p)
あるいは汎用のポートを一旦経由して
(call-with-output-string (lambda (port) (with-output-to-port port p)))
次の様な感じ。
(use gauche.process) (call-with-process-io "mecab -O wakati" (lambda (in out) (display "こんちわ世界" out) (newline out) (read-line in))) (call-with-process-io "mecab -O wakati" (lambda (in out) (display "こんちわ世界\n" out) (read-line in))) (call-with-process-io "mecab -O wakati" (lambda (in out) (write 'こんちわ世界 out) (newline out) (read-line in))) (call-with-process-io "mecab -O wakati" (lambda (in out) (format out "こんちわ世界~%") (read-line in)))