对不起,我不熟悉 fork() 的机制,所以答案可能很简单。为了详细说明我的问题,如果我多次运行 fork(),例如使用 for 循环,并且我使用 WEXITSTATUS(status) 从 /a 孩子那里检索信息,是什么决定了我获得谁的信息?
问问题
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
and WIFCONTINUED
,也许还有其他一些选项。请查阅waitpid()
您系统的手册页。
于 2013-04-15T05:32:32.320 回答