在前一部分提到了僵死进程的概念,如果我们写一个进程,这个进程fork 了一个新的子进程。而,我们不想等待这个进程完全结束,不想在主程序结束时,这个子进程变成僵死进程。利用量词调用 fork 可以达到这一目标。
下面为一个例子,及解释:
在 Ubuntu10.4上的结果:
Main pid is 2736.
child pid is 2737,and my ppid is 2736.
child pid is 2737,and my ppid is 2736,i will die.
My pid is 2736,i have waitted 2737 died.
second child,my pid is 2738, parent pid = 1
总结:
在程序中,主程序中等待了第一个子进程结束,使第一个子进程不会产生僵死。在第一个子进程中,产生第二个子进程。第二个子进程休眠 2秒,等待其父进程(第一个子进程)结束。这是第二个子进程由于在退出前,其父进程提前结束,其父进程变为init。避免产生僵死。为最终需要的目标进程。
在设计中,如果需要一个进程运行时间很长,并且避免产生僵死,则可以在第二个子进程中执行需要的指令。