特定の ID を持つプロセスが存在するかどうかをプログラムで知りたいです。それを達成するために、存在するかどうかをチェックする次の関数を実装しました/proc/<PID>/maps
。ただし、指定された ID の関数を強制終了しても、この関数は 1 を返すことに気付きました。私がやろうとしていることを達成するためのより良い方法はありますか?そうでない場合、このコードの問題は何ですか? 0 を返す必要があるときに 1 を返します。
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;
}