У меня есть эта простая программа, которая создает дочерний процесс, который сразу вызывает exit()
. Поэтому в родительском процессе я ожидаю, что WIFEXITED(status)
будет оцениваться как true
, но это не так. Вместо этого WIFSTOPPED(status)
оценивается как true
и печатается «остановлена». Может ли кто-нибудь объяснить, почему я получаю такое поведение? Я работаю на OS X и компилирую с gcc. Благодаря!Почему WIFEXITED возвращает false после завершения дочернего процесса?
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/wait.h>
int main(void)
{
int pid;
int status;
pid = fork();
if (pid < 0)
printf("fork failed\n");
else if (pid == 0)
{
wait(&status);
if (WIFEXITED(status))
printf("exited\n");
else if (WIFSTOPPED(status))
printf("stopped\n");
}
else
exit(0);
return (0);
}