linux的进程间通信之信号通信

#include <stdio.h>
#include"common.h"


/*
信号的响应有四种方式:
1.默认
2.忽略
3.阻塞延迟响应(挂起)
4.捕抓(关联)
*/

//响应函数 接口是固定的
void f(int sig)
{
    
    
    printf("捕抓到一个信号:%d\n",sig);
    wait(NULL);             //回收了一个僵尸子进程
}

int main()
{
    
    
    pid_t pid =fork();
    if(pid<0)
        {
    
    
        perror("fork failed");
        exit(1);
    }
    else if(pid>0)
        {
    
    
        signal(SIGCHLD,f);              /*关联信号与函数
                                          如果受到SIGCHLD信号就去执行f函数
                                            */
        pause();                        //暂停,直到收到一个不被忽略的信号
    }
    else
        {
    
    
        exit(0);                            //结束子进程就会给父进程发送一个SIGCHLD(17)信号
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_50188452/article/details/110289018
今日推荐