From: Akinori MUSHA Date: 2001-02-18T01:00:07+09:00 Subject: [ruby-dev:12261] system() problem  Ruby で以下を実行すると、いくつかの環境では終了待ちのまま 帰ってこないことが分かりました。 ruby -e "system 'yes | ls'" これは問題を単純化した例にすぎず、それ自体は意味のない処理です。 実際には、 yes | ./Configure などを内部で実行するスクリプトを 呼び出したときに困る、ということになります。  最初に気づいたのはうちの FreeBSD マシンで、最新の HEAD, 1.6, 1.4 のすべてで発生しました。ところが、手元の Debian GNU/Linux potato マシンでは、最新の HEAD, 1.6 とも再現しませんでした。  IRC で他の人たちに聞いてみたところ、 Cygwin や Mandrake / Slackware / Debian GNU/Linux 等で再現するとの報告がありました。 バージョンを特に問わず、 1.4.6, 1.6.1, 1.6.2, 1.7.0 で発生して いるようです。  一方では、先に挙げたように、うちの Linux 環境や helium の 1.4.3 では発生しなかったりして、再現する条件が何なのかはまだ よく分かりません。  ちなみに、シェルや Perl では ls が終了するとともにパイプが 切れて yes も終了しますし、そうあるべきだと思います。  おそらくは system() (vfork() & execvp()) を呼び出したときに 標準入出力の状態が正常でないためだと思いますが、何か思い当たる 節はありますでしょうか? -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "We're only at home when we're on the run, on the wing, on the fly"