0
私はexec
のファイルを最大5回別のファイルに保存して結果を保存しようとしています。私はフォーク-execの待ちループのためにを使用し、これは次のように、それがどのように見えるかです:問題があるコマンドラインのexec exec待ちループ
for(i = 0; i< Number_of_Processes; i++){
pid = fork();
if(pid == 0)
{
execl(...);
exit(EXIT_Failure);
}
else if(pid > 0)
{
wait(&status);
result = WEXITSTATUS;
}
}
、それは(最初に第二のファイルが正しく、その後5回の最初の結果を印刷し直し実行しますまたはユーザーが入力したもの) pid == 0
のときにブレークのように多くの方法を試しましたが、機能しませんでした。私はループ内でexec
を使用する方法の適切な例を見つけることができませんでしたので、数時間立ち往生し、機能を上下させて何も得られませんでした。 私は何をしても、内部ファイルの2回目の実行を見ることができません。それはタイミングの問題だった私は、子プロセスでexecl
前sleep(1)
を追加するとき
を印刷しますか?ちなみに、 'WEXITSTATUS'はあなたの' status'の値をとるマクロです。例[here](http://man7.org/linux/man-pages/man2/waitpid.2.html)を参照してください。 – chrisaycock
@chrisaycock @chrisaycock私の結果の最初の行は私のコードに基づいていますが、2行目と他の行はexecが1回以上実行されなかった最初の行と同じです – yasamin
'pid'あなたは待っています、私は 'wait'の代わりに' waitpid'を使うことをお勧めします。あなたは間違った子供の終わりを捉えているかもしれません。 – DyZ