Linux系统编程:raise函数、wait函数、waitpid函数

wait()

函数说明
Linux系统编程:raise函数、wait函数、waitpid函数_第1张图片
wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或者该进程接收到了一个指定的信号为止。如果该父进程没有子进程或者它的子进程已经结束,则wait()函数就会立即返回。

waitpid()

函数说明:
Linux系统编程:raise函数、wait函数、waitpid函数_第2张图片
waitpid()的作用和wait()一样,但它并不一定要等待第一个终止的子进程(它可以指定需要等待终止的子进程),它还有若干选项,如可提供一个非阻塞版本的 wait()功能,也能支持作业控制。实际上,wait()函数只是 waitpid()函数的一个特例,在Linux 内部实现 wait()函数时直接调用的就是waitpid()函数。

示例:

#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char const *argv[])
{
    /* code */
    pid_t pid = fork();
    if (pid > 0)
    {
        // 父进程,回收子进程资源
        int s;
        pid_t wpid = wait(&s);
        printf("child died pid = %d\n", wpid);
        if (WIFSIGNALED(s))
        {
            printf("child died by signal: %d\n", WTERMSIG(s));
        }
    }
    else if (pid == 0)
    {
        raise(SIGINT);    //进程给自己发信号,SIGINT表示终端中断   2
    }
    return 0;
}

输出结果为:

# ./b.out 
child died pid = 5647
child died by signal: 2

你可能感兴趣的:(Linux,C/C++)