Linux学习之系统编程篇:进程回收(wait / waitpid)
一、wait
wait 函數(shù) :阻塞函數(shù),使進程一直處于等待狀態(tài),直至進程死亡。
(1)頭文件:
(2)函數(shù)使用:
pid_t wait(int *status);參數(shù)用于判斷子進程的死亡原因。
正常死亡:return 0 exit(1)
信號殺死:kill -9 pid
詳細(xì)如下代碼所示:
若不關(guān)心死亡原因可簡化使用方法:wait(NULL);
(3)返回值類型:pid_t
返回值 = -1 表示失敗,意味著沒有子進程,回收結(jié)束。
返回值 > 0 返回值是被回收子進程的 pid。
注意:wait 函數(shù)一次只能回收一個子進程,回收多個子進程需要循環(huán)(注意判斷條件)
二、waitpid
waitpid 函數(shù)可以設(shè)置非阻塞。
(1)函數(shù)使用:
(2)
參數(shù) pid_t pid:
當(dāng)pid=-1:回收任意一個子進程
當(dāng)pid> 0:回收進程 ID 等于 pid 的子進程(定向回收)
參數(shù) status: 用于判斷死亡原因,同 wait 函數(shù)
參數(shù) options:設(shè)置為 0表示阻塞; 設(shè)置為 WNOHANG表示非阻塞。
(3)
返回值 > 0 :被回收子進程的 pid。
返回值 =-1 :回收結(jié)束。
返回值 = 0 :設(shè)置為 WNOHANG 會出現(xiàn),且還有子進程正在運行,沒有退出 。
注意:waitpid 函數(shù)一次也只能回收一個子進程,回收多個子進程需要循環(huán)。代碼如下:
總結(jié)
以上是生活随笔為你收集整理的Linux学习之系统编程篇:进程回收(wait / waitpid)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux学习之系统编程篇:孤儿进程和僵
- 下一篇: Linux学习之系统编程篇:IPC 和管