[Gauche-devel-jp] Re: freopen

アーカイブの一覧に戻る

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






Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る