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); //设置信号处理方式
本文深入解析Linux信号机制,包括如何向目标进程发送信号及目标进程如何接收信号。通过使用kill函数和signal函数,实现进程间的异步通信。详细介绍了Linux信号的安装、处理和应用。
8078

被折叠的 条评论
为什么被折叠?



