(1)假设主进程调用fork()
,并返回-1,因此进程没有子进程。
在名为wait(&status)
的主进程中调用之后,根据手册,它将返回-1。 Will' status'变量保持不变,如同之前一样?
(2)从(1)开始出现这种情况,如果在wait(&status)
行之后,有一行status = WEXITSTATUS(status)
,将会有' status'那么变量呢?
int status = 0;
if (fork()!=0) {
wait(&status);
status = WEXITSTATUS(status);
}
答案 0 :(得分:2)
1:未定义的行为。如果waitpid错误
,则无法保证状态不变2:是的,status = WEXITSTATUS(状态);将取代状态中的值。 (具体来说,WEXITSTATUS应该掩盖值的所有高位)