linux系统编程之阻塞信号集和未决信号集

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,什么时间不阻塞,就会去处理信号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值