子进程退出时会给父进程发信号吗?

父进程创建一个子进程,那么子进程退出时,会不会告诉父进程它要退出了?其实在子进程退出时,会给父进程发送一个SIGCHLD,17号信号。
那么下面用代码来验证一下:
首先要捕捉SIGCHLD信号,输出 i am %d signal ;
再创建子进程,在子进程中输出 i am child,然后退出;
在父进程中每隔1s输出 i am father。

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

void catchsig(int sig)
{
    printf("i am %d signal\n", sig);
}

int main()
{
    signal(SIGCHLD, catchsig);
    pid_t id = fork();
    if(id == 0)
    {
        printf("i am child ,quit!pid:%d\n", getpid());
        exit(1);
    }
    else
    {
        while(1)
        {
            printf("i am father,runing!pid:%d\n", getpid());
            sleep(1);
        }
    }
    return 0;
}

子进程退出时会给父进程发信号吗?_第1张图片

你可能感兴趣的:(Linux)