|
> 子プロセスがexit()に渡す値は1で、親がWEXITSTATUSで取得する値が0なのです。
> ですから8ビットの制限には関係ないのかと思うのです。WIFEXITEDの値にも
> 問題ないはずです。(子プロセスで終了値を標準出力させているのはexit()の
> 直前ですので、子プロセスはほぼ間違いなくexit終了していると考えられます。)
言葉でいくら説明しても、プログラムがそうなっていなければ、思ったとおりの
結果が出ないのは当然のことです。プログラムを掲載してください。私が試した
限りでは、そんな変な現象は出ません。
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main(void)
{
int status;
pid_t pid = fork();
if (pid == 0) {
status = 1;
printf("child: status=%d\n", status);
exit(status);
}
printf("parent: pid=%d\n", pid);
pid = wait(&status);
printf("pid=%d, status=%#x, WEXITSTATUS(status)=%d\n",
pid, status, WEXITSTATUS(status));
return 0;
}
|