Linux异步信号处理之sinal sigaction

Linux信号是一种进程间异步的通信机制,在实现上是一种软终断。

这个通信过程简单可以理解为:进程1发送信号;进程2安装信号,当收到这个信号,就执行处理业务。

一、Linux如何来向目标进程发送信号呢?

使用函数extern int kill(_pid_t _pid, int _sig) ,该函数成功返回0失败返回-1,并设置错误errno

第一个参数是目标进程的进程号,第二个参数是发送信号值

eg:kill(getpid(), 0)

二、目标进程如何收到别人发来的信号呢?

Linux可以使用下面两个函数来安装信号:

1、sinal()函数:

使用方法:signal(SIGUSR1, sig_hangler):第一个参数是接收的信号,第二个参数是接收信号后的函数处理入口;

2、sigaction()函数:

简单用法如下:

void sig_handler(int sig);

struct sigaction act, oact;

act.sa_handler = sig_handler; //信号处理函数入口

sigemptyset(&act.sa_mask); //设置掩码为空

act.sa_flags = 0;

sigaction(SIGUSR1, &act, &oact); //设置信号处理方式




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值