您的位置:首页 > 其它

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

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

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

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

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

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

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

信号的处理在多进程都线程中应用的时候要多注意哦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: