我试图从子进程返回一个整数值。
然而,如果我使用 exit(1)
,则从 wait()
获得的输出为 256
。使用 exit(-1)
则得到 65280
。
有没有办法让我从子进程中获取实际发送的整数值?
if(!(pid=fork()))
{
exit(1);
}
waitpid(pid,&status,0);
printf("%d",status);
编辑: 使用exit(-1)
(这是我实际想要的),我得到了255作为WEXITSTATUS(status)
的输出。它应该是无符号的吗?
exit()
和_exit()
都无所谓,两者都能处理退出状态。但使用exit()
能确保从标准 I/O 渠道刷新挂起的输出和进行类似的清理工作 - 实际上,大多数情况下都应该使用exit()
。虽然使用_exit()
也有其特殊情况,但这种情况很少见。 - Jonathan Lefflerexit
绝对是正确的选择。你的问题并不在于exit
,而是像 Damon 的回答所建议的那样,在于waitpid
。 - Jens Gustedt