子プロセスの終了を、親プロセスでの処理を止めずに受け取ることは可能ですか?
親プロセスは親プロセスで処理を継続したいが、子プロセスが終了したら直ちに別の処理に移りたいのですが、waitpid()
やwait(&status)
を使用すると、親プロセスがずっとそこで止まってしまう点を解決したいです。
以下は一例です。
例えば、以下の例で、whileの中で、たびたび、子プロセスの状態を確認するが、終了してなかったら引き続きwhileの内容を繰り返したい、という内容です。
child.c
c
1int main(){ 2 //処理内容 3 return 0; 4} 5
--> buildして実行ファイルchild
を生成。
main.c
c
1int main(){ 2 pid_t pid = fork(); 3 4 if(pid == 0){ // 子プロセスでは、アプリケーションchildを実行 5 execl("./child", "./child", NULL); 6 exit(EXIT_FAILURE); 7 } 8 9 10 // 親プロセスは親プロセスで処理を行う。 11 while(1){ 12 // 親プロセスでの処理内容 13 14 // 子プロセスが終了していたら、whileを抜ける 15 if ( // 子プロセスが終了していたら ){ 16 break; 17 } 18 } 19 20 // whileを抜けた後の処理 21 22 return 0; 23 24 25} 26
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。