在等待(和状态)系统调用的各种情况下,状态变量会发生什么?

时间:2016-04-08 18:21:20

标签: c operating-system fork wait

(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);
}

1 个答案:

答案 0 :(得分:2)

1:未定义的行为。如果waitpid错误

,则无法保证状态不变

2:是的,status = WEXITSTATUS(状态);将取代状态中的值。 (具体来说,WEXITSTATUS应该掩盖值的所有高位)