今天学习信号以及进程的控制实验

僵尸进程?按照我的理解是在主进程在没有在fork之前设置忽略SID_IGN,且也没有在fork之后主进程进城wait回收的话就有可能会出现僵尸进城。defunct标志。

 

避免僵尸进程的产生可以破坏上述的两个条件之一

1、主进程中设置忽略SIGCHLD信号获取在主进程后面wait进行子进程尸体的回收

2、在子进程当中再次fork创建孙子进程,然后子集成退出孙子进城保留,由于孙子进城没有了直接主进城,那么其结束之后尸体由init进程回收。

 

 

 

信号处理函数给我们带了许多便利,但是却也隐藏着许多的问题,使得有时候bug的出现莫名奇妙。主要是我们调用的底层函数的是否可重入决定的(是否可以重入函数按我自己的个人理解是这个函数执行过程没有使用全局获取静态的变量或者涉及这些的函数那么就是可重入的)。具体的深入了解还需要多多练习。

如果要解决这个问题可以使用信号量处理(P-V),使得对一个不可重入的函数实现并发的互斥性操作。

 

 

 

信号的处理在多进程都线程中应用的时候要多注意哦!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值