■子プロセスの終了を待つ
戻り値 失敗 -1
#include <stdio.h>
#include <sys/types.h>
int main(char*args[]){
int PID = fork();
if(PID == 0){
//子プロセスの場合
printf("Child Start\n");
sleep(4);//4秒待機
printf("Child End\n");
}else{
//親プロセスの場合
printf("PalentStart\n");
wait(&PID);
printf("Palent End\n");
}
return 0;
}
処理結果
PalentStart
Child Start
Child End
Palent End
■親プロセスに値を返してプロセスの終了
#include <stdio.h>
#include <sys/types.h>
main(){
exit(100);//親プロセス この場合はシェルに100を返す
}
シェルに返された値を表示するには、$? をシェルに入力
$?
bash: 100: command not found
■exitとwait
#include <stdio.h>
#include <sys/types.h>
main(){
int PID = fork();
if(PID == 0){
//子プロセスの場合
printf("Child Start\n");
sleep(4);//4秒待機
printf("Child End\n");
exit(10);//プロセスの終了 親プロセスに 10 を返します
}else{
//親プロセスの場合
printf("PalentStart\n");
wait(&PID);//子プロセスが終了するまで待機します。
printf("%d\n",PID/256);//子プロセスの返した値の表示
}
}
処理結果
PalentStart
Child Start
Child End
10
注)子プロセスの exit() は 親がwait()で待機して受け取る必要があります。
受け取らないと、終了できずにゾンビプロセスになります。
▲トップページ
>
Linux と C