"master"#0と、#nの出力が次のような方法で動作するいくつかのスレーブプログラム#1、#2、#3のプログラムを持っているとします。 #n + 1で読むことができます。以来、その後パイプラインをC言語でbashする
...
pipe=popen("bash","w");
fprintf(pipe,"./program#1 \n");
fprintf(pipe,"./program#2 \n");
fprintf(pipe,"./program#3 \n");
.
.
.
...
:
PROGRAM#0:私は、すべてのスレーブプログラムは、(非常にこのようなCコード)を順に実行するように設定されているbashシェルのパイプラインを開くために#0を取得しますスレーブは、すべての "fprintfs"コマンドを実行するためにマスターよりも時間がかかりますが、コンピュータがコマンドラインの蓄積をどのように管理していますか?充填するバッファーはありますか?そして、すべてのfprintfコマンドの後に "fflush(pipe)"を書き留めると、正しい順序でbashに渡されるコマンドが保証されますか?これはさらに安全ですか?
(これは正直、Cプログラムよりも、シェルスクリプトで簡単に行うことが何かのように見えますが)コール
を使用することですプログラム#0からのパイプからの読み込みで、何らかのデータを読み込めるまでブロックされます。はい、パイプバッファがあります。いいえ、あなたがやっているように、プログラム#nはプログラム#n-1の出力を読みません。 –