第三の出力ストリーム

もんだいです。以下の挙動をするプログラムを考えてください。

i@un ~> ./a.out > l
hello
i@un ~> ./a.out 2> l
hello

こたえ。

i@un ~> cat putstdin.c
main(){
        write(0,"hello\n",6);
}
i@un ~> ./a.out 0> l
i@un ~> cat l
hello

いやあ最近 write の引数を間違える機会が増えてて、標準入力でも出力できるんだなーと。ごくまれになんか使えそうな局面があったような無かったような気がします。つまり覚えてないんだけど。

ちなみに write(3, とかにすると、普段はどこにも出力されないけど、 3> とすれば回収できるようになります。 3-9 までは shell (zsh) で使える模様。一応、 Linux, FreeBSD, MacOSX, Solaris くらいで動くこと確認しておきました。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h