1

私は与えられたようにwaitpidを使用しています

waitpid(childPID、&status、WNOHANG);

これは、必要に応じてフォークし、親が子プロセスが戻るのを待つ無限ループ内のプログラムで使用されます。しかし最近、これをcerrに出力した後にプログラムが終了するという問題に遭遇しました。

waitpid:子プロセスはありません

これは常に、プログラムがクラッシュ/終了する前のプログラムからの最後のログです。プログラムがアクセスした最後の10個のアドレスを出力するトレースバック関数が記述されているため、セグメンテーション違反などが発生しないことはわかっています。それでは、子プロセスがないことを検出した後、プログラムがループを終了したことを意味しますか?それとも、ここで何か不吉なことが働いていますか?

4

1 に答える 1

0

ここで起こっていることは、プロセステーブルに使用可能なエントリがないためにforkシステムコールが失敗していることだと思います。フォークの出力で恐怖を起こすことができます。RESOURCE_TEMPORARILY_UNAVAILABLEである必要があると思います。

于 2012-01-24T08:43:33.803 に答える