调用fork两次以避免僵死进程,第一遍看的时候不懂,感觉书里讲的比较少,到第二遍的时候才自认理解了一些。
我的理解是这样的:
初始进程fork个子进程,子进程再fork个孙子进程来。然后让子进程结束,孙子进程的父进程就改成init。
初始进程等待其子进程结束并用waitpid处理之,然后继续运行;而孙子进程结束后的处理由init来完成。
这样初始进程和孙子进程就可以各做各的事,互不干扰了。