异步等待

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chen739481102/article/details/73196992

进程异步等待,不需要父进程阻塞等待,当子进程退出时会给父进程发送信号,父进程捕捉到信号,然后去执行信号处理函数,信号处理函数中调用waitpid等待子进程,完成回收,否则子进程会变成僵尸进程。

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void handler(int sig)
{
    waitpid(-1,NULL,1);
    printf("get sig:%d\n",sig);
}
int main()
{
    printf("begin:\n");
    signal(SIGCHLD,&handler);
    if(fork()>0)
    {
       while(1)
       {
            printf("i am father\n");
            sleep(1);
       }
    }
    else
    {
        printf("i am child\n");
            sleep(1);
       }
    }
    else
    {
        printf("i am child\n");
        sleep(3);
        exit(1);
    }
    printf("end\n");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/chen739481102/article/details/73196992
今日推荐