linux系统编程之阻塞信号集和未决信号集
--------调用kill函数,用第三个子进程杀死父进程
#include<stdio.h>
#include<unistd.h>
#include<sys/typr.h>
#include<signal.h>
int main()
{
int i=0;
for(i=0;i<5;i++)
{
pid_t pid=fork();
if(pid==0)
{
break;
}
}
if(i==2)
{
printf("I will kill father after 5s\n");
sleep(5);
kill(getppid(),SIGKILL);
while(1)
{
sleep(1);
}
}
if(i==5)
{
printf("I am parent,I am happy!\n");
sleep(1);
}
return 0;
}
输出:
--------调用kill函数,用父进程杀死 其中第三个子进程
```bash
#include<stdio.h>
#include<unistd.h>
#include<sys/typr.h>
#include<signal.h>
int main()
{
int i=0;
pid_t pid3,pid;
for(i=0;i<5;i++)
{
pid_t pid=fork();
if(pid==0)
{
break;
}
if(i==2)
{
pid3=pid;
}
}
if(i<5)
{
printf("I am child,pid=%d,ppid=%d\n",getpid(),getppid());
sleep(3);
}
else if(i==5)
{
printf("I am parent,pid=%d,I will kill xiaoshan pid3=%d\n",getpid(),pid3);
sleep(5)
kill(pid3,SIGKILL);
while(1)
{
sleep(1);
}
}
return 0;
}
输出:
阻塞信号集和未决信号集的关系
如果没有阻塞信号集,当一个信号来临的时候,先变为1,信号处理结束后,变为0;如果设置了阻塞信号,当一个信号来临时,未决 信号翻转为1,如果不解除阻塞,则永远为1,什么时间不阻塞,就会去处理信号