//○wait

//■子プロセスの終了を待つ

//戻り値 失敗 -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

//○exit

//■親プロセスに値を返してプロセスの終了

#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