私が知る限り、waitpidが-1を返す場合、それはエラー状態です。WEXITSTATUS(childStatus)の子プロセスから成功(EXIT_SUCCUSS)を取得するにはどうすればよいですか?
waitpidのchildStatusとWEXITSTATUS(childStatus)からの戻り値の違いは何ですか?同じですか?
pid_t returnValue = waitpid(Checksum_pid, &childStatus, WNOHANG);
printf("return value = %d", returnValue);
printf("return value = %d", childStatus);
if (WIFEXITED(childStatus))
{
printf("Exit Code: _ WEXITSTATUS(childStatus)") ;
//Proceed with other calculation.
}
オプションを使用するとWNOHANG
、私は考えを期待することをほとんどの時間がwaitpid
返されます-1
と、errno
にセットECHILD
。
いずれにせよ、戻ってくるときwaitpid
はいつでも-1
、あなたは見ているべきではありませんchildStatus
、それは(私が知っている限り)ただのゴミかもしれません。代わりに、を見てerrno
、適切に処理してください。
それ以外の場合、コードは問題ないように見え0
、EXIT_SUCCESS
からまたはを抽出できるはずchildStatus
です。
のマニュアルページにwaitpid
は、次のサンプルコードが記載されています。
if (WIFEXITED(status)) {
printf("exited, status=%d\n", WEXITSTATUS(status));
} else if (WIFSIGNALED(status)) {
printf("killed by signal %d\n", WTERMSIG(status));
} else if (WIFSTOPPED(status)) {
printf("stopped by signal %d\n", WSTOPSIG(status));
} else if (WIFCONTINUED(status)) {
printf("continued\n");
}
else printf("oops?\n")
これに最後のステートメントを追加するのは良い考えかもしれませんが。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加