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); //设置信号处理方式