wait()与waitpid()用于等待进程结束
#include <sys/wait.h>
pid_t wait(int *statloc); //参数获取终止状态
pid_t waitpid(pid_t pid, int *statloc, int options); //pid==-1时,与wait()等效。
当一个进程正常或异常结束时,内核就向其父进程发送SIGCHLD信号。
如果所有子进程都还在运行,则阻塞。
如果一个子进程终止,正等待父进程获取其终止状态,则取得该子进程的终止状态立即返回。
如果没有子进程,则立即出错返回。
区别:
在一个子进程终止前,wait使其调用者阻塞,而wiatpid()有个选项,可使调用者不阻塞。
waitpid()并不等待在其调用之后的第一个终止子进程,它有若干选项,可以控制它所等待的进程
waitpid()提供的wait()的非阻塞版本。 有时用户想获得一个子进程的状态,但不想阻塞。
pthread_join()用于等待线程结束。