我想在我的程序中知道是否存在具有某個ID的進程。我實現了以下功能來實現該功能,它檢查是否存在/proc/<PID>/maps
。然而,我注意到,即使我殺死了一個給定ID的函數,這個函數仍然返回1.是否有更好的方法來實現我想要做的事情,如果沒有,這個代碼有什麼問題,如果有的話,爲什麼是將其返回1,當它應該返回0。確定進程ID是否存在進程
int proc_exists(pid_t pid)
{
stringstream ss (stringstream::out);
ss << dec << pid;
string path = "/proc/" + ss.str() + "/maps";
ifstream fp(path.c_str());
if (!fp)
return 0;
return 1;
}
你是否在等待發出殺死並檢查它已退出?如果你做'ps -ef |會發生什麼grep _PID_'? –
雅我在一個循環中調用proc_exists,等待進程被殺死。現在我用ps -ef |查看grep,它表示defunt功能。什麼是defunt功能? – pythonic
這意味着該過程不再運行;但是,它並沒有通過調用wait()或waitpid()來清除。它仍然是信號的有效目標,並且在進程表中仍然有一個條目。 –