Shiro Kawai
shiro****@lava*****
2004年 1月 15日 (木) 21:34:59 JST
From: Satoru Takabayashi <sator****@namaz*****> Subject: [Gauche-devel-jp] freopen Date: Thu, 15 Jan 2004 15:46:11 +0900 > Unix のツールによくある --quiet オプションを作っていて、 > freopen が欲しいと思いました (標準出力を /dev/null にしてし > まうのが楽なので)。 なるほど。 GaucheではCのstdioを使っていないので、freopenを直接呼ぶことは できませんが、似たような機能は提供できなくはないです。 現状では、 (close-output-port (current-output-port)) (with-output-to-file "/dev/null" (lambda () ...本体...)) のようにすれば、一応「本体」の部分では標準出力 (ファイルディスクリプタ1) への出力は/dev/nullに振られます。ただ、with-output-to-fileが current-output-portを切替える前だとか、with-output-to-fileを 抜けた後だとかに標準出力への出力が発生すると、「閉じられたポートへの 出力」エラーが発生してどうしようもなくなるので、Schemeレベルで アトミックに切替えられるAPIはあった方がいいですね。 dup2(2)へのAPIを作って、その上に構築するのがいいのかな。 --shiro