私はfork
、exec
、wait
の新機能をすべて新しくしています。私は割り当てを持っています。私はfork
をメインプロセスにして、すべての子供を使って各プロセスごとに異なるFIFOに書き込みます。例えば、私が3人の子供を持っているならば、私は3つの異なる児童に書く必要があります。次に、私の親プロセスは、最初のものが任意のFIFO上の書き込みを終了し、その特定のFIFOからデータを読み込むのを待たなければなりません。私が困惑したことは、親プロセスが最初に完了するのを待たなければならず、すべてのプロセスが完了するのではないということです。私がすべてを待たなければならない場合は、while(wait(NULL)>0)
を使用します。しかし、この場合はどうしますか?私は以下のサンプルコードを書いた:複数のフォーク、最初の完了を待ちます
pid_t *pid;
int i;
pid = malloc(sizeof(pid_t)*children);
for(i=0;i<children;i++)
{
if((pid[i]=fork())<0)
{ /* error */ }
if(pid[i]==0)
{
//WriteOnFifos
return 0;
}
else
{
//wait for the first process to finish
}
}
ありがとうございます。どんな助けもありがとう。
コンパイルされません。 'fork'は関数呼び出しではありません –
すみません、私は編集しません。 –
編集しないでください。完全なコードを投稿してください。 –