判斷子程序是否存在

2021-05-22 01:20:43 字數 530 閱讀 9137

if kill(pidt,0)  <  0 ,child process has dead.

else child alive;

前提條件是,父程序已經處理了sigchld.

否則,此檢測方法將失效

《unix 環境高階程式設計》的解釋為:kill(pid_t pid,int signo)

posix將編號為0的訊號定義為空訊號。如果signo引數是0,則kill仍執行正常的錯誤檢查,但不傳送訊號。這常被用來確定乙個特定程序是否仍舊存在。如果向乙個並不存在的程序傳送空訊號,則返回值為-1,並將errno設定為esrch。但是,應當了解,unix系統在經過一段時間後會重新使用程序id,所以現有的具有所給定程序id的程序並不一定就是你想要的程序。

還應該理解的是,對於程序是否存在的這種測試不是原子操作。在kill向呼叫者返回測試結果時,原來存在的被測試程序此時可能已經終止,所以這種測試並無多大價值。

如果呼叫kill為呼叫程序產生訊號,而且此訊號是不被阻塞的,那麼在 kill返回之前,就會將signo或者某個其他未決的非阻塞訊號傳送至該程序。

python判斷程序是否存在

coding utf 8 import win32com.client def check exsit process name wmi win32com.client.getobject winmgmts processcodecov wmi.execquery select from win32...

C 判斷程序是否存在

判斷指定的程序或程式是否存在方法 一 判斷指定程式名的程序是否存在 view plain bool callback ipenumfunc hwnd hwnd,lparam lparam return 1 二 判斷指定程序名的程序是否存在 view plain dword getprocessidf...

shell 判斷程序檔案是否存在

判斷增量指令碼程序是否還在 ps ef grep sh new sync data.sh grep v grep grep v vim dev null if ne 0 then mkdir p proccesslog dev null echo error new sync data.sh 指令碼...