1.signal与kill
信号的实质是非负整数,这里只实现中断键(CTRL+C),其对应的整数为2.
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>
#include<sys/types.h>
void hand(int val)
{
printf("信号%d",val);//其中val的值就是信号的整数
}
int main()
{
signal(SIGINT,hand);//SIGINT就是CTRL+C发出的信号
printf("进程id:%d",getpid());//调用kill函数时需要用到该进程id
return 0;
}
可在终端上输入CTRL+C或者使用函数kill来查看效果
kill(进程id,要发的信号);
2.sigaction与sigqueue
sigaction比较与signal,不仅仅可以接收信号,做信号处理,还可以接收信号同时接收一些数据
下面是有关sigaction函数原型
结构体结构
sa_sigaction原型