现在为大家介绍与之前的管道通信完全不同的通信方式-------信号通信
示意图如下,在用户空间是不可以发送信号量的,只能通过内核来发送
而信号是分很多种的,我们通过命令kill -l可以看到Linux内核中有64中信号
我们可以通过内核像指定的进程(pid号)发送这64种信号种的一种
下面通过一个程序来实现信号的通信-------------发送信号终结其他进程的死循环
死循环进程:
int main()
{
while(1);
return 0;
}
终结死循环的进程(我们通过外部传参给主函数,信号的id,还有pid):
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char**argv)
{
int pid=atoi(argv[2]),sig=atoi(argv[1]);
if(kill(pid,sig)==0)
{
printf("the process is killed !\n");
}
return 0;
}
这样进程就被杀掉了