0
私はすぐにexit()
を呼び出す子プロセスを作成するこの簡単なプログラムを持っています。親プロセスでは、WIFEXITED(status)
がtrue
と評価されると予想していますが、そうではありません。代わりに、WIFSTOPPED(status)
はtrue
と評価され、「停止」が印刷されます。なぜ私はこの動作を得ているのか誰も説明できますか?私はOS Xで動作していて、gccでコンパイルしています。ありがとう!なぜ子プロセスが終了したらWIFEXITEDはfalseを返しますか?
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/wait.h>
int main(void)
{
int pid;
int status;
pid = fork();
if (pid < 0)
printf("fork failed\n");
else if (pid == 0)
{
wait(&status);
if (WIFEXITED(status))
printf("exited\n");
else if (WIFSTOPPED(status))
printf("stopped\n");
}
else
exit(0);
return (0);
}