4

私はCentos4を使用しており、C ++プログラムでkill(pid、0)を使用して、指定されたpidで実行されているプロセスが現在あるかどうかを確認しています。プロセスが開始された直後に、実際にプロセスが実行されていても、kill(pid、0)がゼロを返さない小さな時間枠があるという競合状態があるのではないかと思い始めています。

これは既知の問題ですか?pidが実際に存在するが、開始されたばかりの場合、kill()はゼロ以外を返すことはありますか?kill()が存在をテストするのに信頼できない場合、このテストを実行するためのより良い方法はありますか?

4

1 に答える 1

1

kill(pid, 0)プロセスが存在し、シグナルを送信できる場合にのみ 0 を返します。プロセスがユーザーとして実行されていない場合 (およびユーザーが root でない場合)、呼び出しは -EPERM で失敗します。

于 2012-06-11T02:53:14.250 に答える