From: Urabe Shyouhei Date: 2010-07-02T13:47:44+09:00 Subject: [ruby-dev:41780] Re: [Feature #3513] spawn ..., err: nil 卜部です。 > まず、標準エラー出力を黙らせるのに close するのは良い方法ではないでしょう。 > close すると、出力が起きたときにエラーになるかもしれません。 > また、なにか他のファイルが 2番という fd に割り当てられていたらそこに > 出力されてしまうかもしれません。 > たとえばデータベースが割り当てられていて、データベースが壊れたりしたら > 目も当てられません。 任意の状況で常にstderrを閉じよ、という主張に対する反論としては、妥当なものだと 思います。しかし、私のやりたかったケース(lzma)では上記の心配はありません。 DBなどを使わない場合でもstderrを閉じるのは悪い行為だと思いますか?だとしたらな ぜそれはspawnでは可能になっているのですか? 私の主張は:closeの位置にnilも受け付けて欲しいというだけですので、stderrを閉じ ることの是非とは独立した話のはずです。 > では適切な方法は、というと、err:"/dev/null" などとリダイレクトすることです。 > (Unix では) それは移植性がありません。せっかくspawn使ってるのに。 さらに背景を説明すると、くだんのスクリプトが動く環境には/dev/nullがありませ ん。Linuxですがキャラクタデバイスへのアクセスが(cgroupで)禁止されています。