wait

1、wait阻塞父进程,没有子进程或SIGCHLD set to SIG_IGN 会失败,until status information for one of the terminated child processes of the calling process is available, or until delivery of a

signal whose action is either to execute a signal-catching function or to terminate the process.

2、status 什么时候是0:

The process returned 0 from main().

The process called _exit() or exit() with a status argument of 0.

The process was terminated because the last thread in the process terminated.

3、WIFEXITED(stat_val)

Evaluates to a non-zero value if status was returned for a child process that terminated normally.  包括stat_val是0;但0是正常退出,其他exit(2)等退出。

WEXITSTATUS (status); 只有stat_val== 0 才有意义。其他的比如signal的退出也都是0;

4、WIFSIGNALED(stat_val)

Evaluates to a non-zero value if status was returned for a child process that terminated due to the receipt of a signal that was not caught (see <signal.h>).

WTERMSIG(stat_val)

If the value of WIFSIGNALED(stat_val) is non-zero, this macro evaluates to the number of the signal that caused the termination of the child process.

5、信号的status id号和exit的不同。

原文地址:https://www.cnblogs.com/wocgcow/p/5892914.html