1.什么是进程等待
1.通过系统调用wait/waitid,来对子进程进行进行检测和回收的功能。
2.为什么有进程等待
1.对于每个进程来说,如果子进程终止,父进程没有停止,就会形成僵尸进程,导致内存泄露,为了防止僵尸进程的形成,父进程需要等待子进程,进而解决内存泄漏的问题。这是必须要解决的
2.我们通过进程等待,进而了解子进程的退出情况,知道子进程在干什么,了解子进程完成的怎么样了。
比如:
3.进程等待怎么办
父进程通过调用wait/waitpid进行僵尸进程的回收问题。
原理:
子进程退出,一共有三种状态:
1.代码运行完毕,结果正确
2.代码运行完毕,结果错误
3.代码异常终止
父进程等待,期望获得子进程哪些信息呢?
1.子进程是否异常
2.子进程运行结果对吗,不对的原因是什么?
不同的退出码,表示不同的原因。
父进程要拿子进程的数据信息,为什么要用wait/waitpid等系统调用借口呢?
因为进程的独立性,每个进程相互之间没有影响。
4.父进程在等待子进程过程中做什么呢?
父进程可以什么都不做,处于阻塞状态,直到子进程运行结束,父进程开始回收子进程。
也可以处于非阻塞状态中,处理自己的事情。这是非阻塞轮询+做自己的事情。