wait()与waitpid()与pthread_join()

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()用于等待线程结束。

原文地址:https://www.cnblogs.com/funnylinux/p/3554777.html