- 227 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 14:05:54 ]
- 今、『OS自作入門』を読んでる途中で、ちょっと興味があるので実験してみました。
書いたコードは、ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2397.txt です。 このコードは次のことを行います。 ・親プロセスがpipeを二つ作る ・lsの結果をmycat(自作)を二回通す ・起動するアプリは、パイプでつなげながらfork-exec ここで質問なんですが、 ・一番最後のclose(fd[0][1])を実行しないと、子プロセスが終了しないのですが、 それはなぜでしょうか? ・なんか、もっと簡単にできないでしょうか。 今の方針だと、n個のプロセスを起動する場合は、n-1個のpipeが必要で、 それぞれfork後、関係ないpipeを全部closeしなければなりません。 なお、maycat.cは以下です。 #include <unistd.h> int main() { char buf[1]; while (read(0, buf, 1) > 0) { write(1, buf, 1); } return 0; }
|

|