标签:continue 多个 接口 状态 情况 for 进程组 not nbsp
1.等待回收的两个函数wait()和waitpid()函数
1.1 wait(int *status)的用法:阻塞函数,等待任意一个子进程的返回。
*wait(NULL):对子进程的结束状态不关心;
*wait(status) 可以通过statu查看子进程的结束状态。
int statu;
wait(&statu);
if(WIFEXITED(statu)){ //正常退出
printf("正常结束code:%d\n",WEXITSTATUS(statu));//code状态码用于表示成功与否
}else if(WIFSIGNALED(statu)){//接收信号退出
printf("异常结束signo:%d\n",WTERMSIG(statu));
}
2.waitpid()的用法
pid_t waitpid(pid_t pid, int *status,int options);
参数:.pid == -1 等待任一子进程。
.pid > 0 等待进程号为pid的进程返回
.pid == 0 等待任何一个组id和父进程组id相同的进程的返回
.pid < -1 等待任何一个进程的组id号和参数pid绝对值相同的进程
options:(可以多个条件一起用 |)
WNOHANG return immediately if no child has exited.
WUNTRACED also return if a child has stopped (but not traced via
ptrace(2)). Status for traced children which have stopped
is provided even if this option is not specified.
WCONTINUED also return if a stopped child has been resumed by deliveryof SIGCONT.
对status状态的操作:
.WIFEXITED(status)若子进程为正常终止,则为真。
对于这种情况可执行WEXITSTATUS(status)求得终止码。
.WIFSIGNALED(status) 若为异常终止子进程,则为真(接到一个不捕捉的信号)。
对于这种情况,可执行WTERMSIG(status)取使子进程终止的信号编号。
另外某些实现定义宏:WCOREDUMP(status)若已产生终止进程的core文件,则它返回真
.WIFSTOPPED(status) 若为当前暂停子进程的返回的状态,则为真。
对于这种情况,可执行WSTOPSIG(status)取使子进程暂停的信号编号
标签:continue 多个 接口 状态 情况 for 进程组 not nbsp
原文地址:https://www.cnblogs.com/edan/p/8881936.html