當前位置:
首頁 >
Linux学习之系统编程篇:进程回收(wait / waitpid)
發布時間:2024/9/30
40
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Linux学习之系统编程篇:进程回收(wait / waitpid)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、wait
wait 函數 :阻塞函數,使進程一直處于等待狀態,直至進程死亡。
(1)頭文件:
(2)函數使用:
pid_t wait(int *status);參數用于判斷子進程的死亡原因。
正常死亡:return 0 exit(1)
信號殺死:kill -9 pid
詳細如下代碼所示:
若不關心死亡原因可簡化使用方法:wait(NULL);
(3)返回值類型:pid_t
返回值 = -1 表示失敗,意味著沒有子進程,回收結束。
返回值 > 0 返回值是被回收子進程的 pid。
注意:wait 函數一次只能回收一個子進程,回收多個子進程需要循環(注意判斷條件)
二、waitpid
waitpid 函數可以設置非阻塞。
(1)函數使用:
(2)
參數 pid_t pid:
當pid=-1:回收任意一個子進程
當pid> 0:回收進程 ID 等于 pid 的子進程(定向回收)
參數 status: 用于判斷死亡原因,同 wait 函數
參數 options:設置為 0表示阻塞; 設置為 WNOHANG表示非阻塞。
(3)
返回值 > 0 :被回收子進程的 pid。
返回值 =-1 :回收結束。
返回值 = 0 :設置為 WNOHANG 會出現,且還有子進程正在運行,沒有退出 。
注意:waitpid 函數一次也只能回收一個子進程,回收多個子進程需要循環。代碼如下:
總結
以上是生活随笔為你收集整理的Linux学习之系统编程篇:进程回收(wait / waitpid)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux学习之系统编程篇:孤儿进程和僵
- 下一篇: Linux学习之系统编程篇:IPC 和管