-1

親でファイルを fork() 読み取り、パイプを介して子に渡し、子でパイプから受信したファイルを execv したいプログラムにリダイレクトする C プログラムを作成しています。

たとえば、doc.txt で /bin/less を実行すると、親で doc.txt を読み取って子に渡し、パイプの読み取り側から文字列 receive を使用して less を実行します。execv() 部分を除いて、他のすべては問題ありません。

execv() の man ページを読みましたが、これを行うにはあまり役に立ちません...

何か助けはありますか?

4

1 に答える 1

0

フォークされた子は親ファイル記述子を共有するため、 dup2()を使用してstdinをファイル記述子にリダイレクトし、子プロセスでフォークして実行するだけです。

子プロセスがstdinからデータを読み取るとき、開いたファイル記述子(doc.txtへの記述子である可能性があります)から読み取ります。

于 2012-05-26T09:40:21.217 に答える