首页 > 代码库 > shell lab

shell lab

pid_t waitpid(pid_t pid, int *status, int options);

返回:如果成功,返回子进程的PID,如果WNOHANG,则为0,如果其他错误,则返回-1;

options = 0(默认情况下)时,进程吊起直到等待列表中的一个子进程终止。

如果pid > 0,那么等待集合就是一个单独的子进程,子进程进程ID为pid。

如果pid = -1,那么等待集合就是由父进程所有的子进程组成的。

 

修改默认情况:
设置options为常量

WNOHANG:如果等待集合中的任何子进程还没有终止就立即返回0,以便在等待子进程终止的过程中做其他工作。

WUNTRACED:返回已终止或者被停止的子进程,默认行为是只返回已终止的子进程的PID。

WNOHANG | WUNTRACED:立即返回,如果等待集合中没有任何子进程已终止或者被停止,则返回0,否则返回相应PID。

头文件:errno.h

 

检查已回收子线程的退出状态:
技术分享

 

如果调用进程没有子进程,那么waitpid会返回-1,并且设置errno为ECHILD。如果waitpid函数被一个信号中断,那么它返回-1,并设置errno为EINTR。

头文件:errno.h

shell lab