申し訳ありませんが、fork() の仕組みに精通していないので、答えは非常に簡単かもしれません。私の質問を詳しく説明すると、たとえば for ループで fork() を複数回実行し、WEXITSTATUS(status) を使用して子から情報を取得した場合、誰の情報を取得するかを決定するものは何ですか?
質問する
104 次
1 に答える
2
wait()
orwaitpid()
関数は死体のPID を返し、ステータス値はその死体に属するステータスです。
int status;
pid_t corpse = wait(&status);
if (corpse > 0)
{
if (WIFEXITED(status))
printf("Process %d died with exit status %d\n", (int)pid, WEXITSTATUS(status));
else if (WIFSIGNALED(status))
printf("Process %d died from signal %d\n", (int)pid, WTERMSIG(status));
else
printf("Process %d was reported with status 0x%.4X\n", (int)pid, status);
}
ほとんどの実際のシステム (通常は ) でコア ダンプについて調べることができますWCOREDUMP(signal)
が、POSIX はそれを標準化していません。else
この句でカバーされるオプションには、WIFSTOPPED
とWIFCONTINUED
、およびその他のオプションが含まれます。お使いのシステムのwaitpid()
マニュアル ページを参照してください。
于 2013-04-15T05:32:32.320 に答える