分叉的子进程正在工作,没有正常退出(被杀死)。发生这种情况的可能情况是什么?儿童进程不能正常退出的原因是什么?
1
A
回答
1
这可能是孩子是僵尸。
子进程退出后,进入Z
(僵尸)状态。这个状态的存在是为了保持孩子的退出状态,直到孩子的父进程能够检索它,并且防止孩子的PID被重用,直到父母被告知孩子退出。
通过调用系统调用系列调用之一,通知父进程已退出子进程。通常,这是响应于SIGCHLD
信号完成的。一旦父母完成了这一步,孩子的PID将被释放,僵尸进程将消失。 (或者,如果父进程退出,则其所有未完成的子进程将重新设置为init
,退出时它们将调用waitpid()
)。
0
父进程是否等待子进程的退出状态?你是否尝试过从wait()返回的值上的WIFSIGNALED()和WTERMSIG()宏,以查看子节点是否被信号终止,如果是,哪一个?
相关问题
- 1. 儿童的ID不能正常工作
- 2. Qt - MDI儿童不能正常关闭
- 3. 我的Mozilla Firefox是有点儿车。可能是什么原因?
- 4. 退格不能在PHP中工作的原因是什么?
- 5. 为什么我的线程不能正常退出?
- 6. 进程正常退出
- 7. 网址无法正常处理。可能是什么原因?
- 8. java.lang.RuntimeException:主线程循环意外退出,可能是什么原因?
- 9. 流不可写入异常的可能原因是什么?
- 10. 获取退出状态值的原因是什么-1
- 11. JVM退出代码1073807364的原因是什么?
- 12. 什么是死锁的常见原因?
- 13. Classformat异常的原因是什么?
- 14. 为什么epmd进程不会退出?
- 15. 这是什么原因为stackoverflow异常?
- 16. 是什么原因
- 17. JasperException的可能原因是什么
- 18. 这个输出的原因是什么?
- 19. stringstream输出的原因是什么?
- 20. 使用Forever;我怎样才能找出儿童进程的PID?
- 21. CMOS_WRITE无法正常工作的原因是什么?
- 22. 为什么缩进的错误原因是错误的功能?
- 23. PhoneGap app for iOS中EXC_BAD_ACCESS异常的可能原因是什么?
- 24. 什么可能是使用StackExchange.Redis超时异常的原因?
- 25. 是什么原因造成的EXC_CRASH上抛出:异常?
- 26. setBackgroundResource抛出一个空异常的原因是什么?
- 27. 获得专门的儿童班的正确方法是什么?
- 28. 如果退出正常,杀死进程
- 29. 什么是MVC儿童动作?
- 30. 什么是Windows 8'儿童会议'?
当然,我们需要更多的信息 – ckv 2011-01-28 06:09:47