子プロセスを作成してすぐに終了(_exit())した後、待機してステータスを確認したい。ここで、if/else コンストラクトの「else」ブランチで、WIFSIGNALED も確認する必要があるかどうか疑問に思います。私が理解している限り、待機を実行すると、a) エラーが発生した可能性があります (-1)、子は (exit() または _exit()) によって正常に終了した可能性があります。信号なので、チェックを省略できますよね?
//remainder omitted
int status;
pid_t t_pid = wait(&status);
if (t_pid == -1) {
perror("wait");
exit(EXIT_FAILURE);
}
if (WIFEXITED(status)) {
printf("child terminated normally, status = %d\n",
WEXITSTATUS(status)
);
} else { // <-- do it have to check for WIFSIGNALED() here?
printf("child was terminated by a signal, signum = %d\n",
WTERMSIG(status)
);
}