linux操作系统之子进程回收函数wait和waitpid函数小结
? ? ? 一個進程在終止時會關(guān)閉所有的文件描述符,釋放用戶空間分配的內(nèi)存,但是它的PCB還保留著,內(nèi)核在其中還保留著進程的一些信息:如果正常終止,則保留著退出狀態(tài);如果異常終止則保存著導致進程種植的信號。
? ? ?在父進程中可以調(diào)用wait和waitpid函數(shù)來獲取進程信息,然后徹底清除這個進程。
? ? ?(1)wait函數(shù)
? ? ? ?函數(shù)原型及頭文件:
函數(shù)功能:1)阻塞等待子進程退出;2)回收子進程殘余資源;3)獲取子進程結(jié)束狀態(tài)。
函數(shù)返回值:成功:清理掉的子進程id,失敗:返回-1;
使用wait函數(shù)傳出參數(shù)status來保存進程的退出狀態(tài),可以借助宏函數(shù)進一步判斷進程終止的具體原因,具體宏函數(shù)如下:
(2)waitpid函數(shù)
函數(shù)原型;
? ? ?pid_t? waitpid(pid_t pid,int *status,int options);
函數(shù)功能:作用同wait,但可以指定pid進程清理,可以不阻塞
函數(shù)參數(shù):
? ? ??
第三個參數(shù)option參數(shù):
? ? ? ? WNOHANG:不發(fā)生阻塞,子進程繼續(xù)運行,返回值為0;
? ? ? ? 參數(shù)為0時,等同于wait,阻塞狀態(tài)。
總結(jié):一次wait和waitpid只能清理一次子進程。
總結(jié)
以上是生活随笔為你收集整理的linux操作系统之子进程回收函数wait和waitpid函数小结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 校花前传之很纯很暧昧剧情介绍
- 下一篇: 成都大熊猫繁育研究基地观光车乘车规则