【发布时间】:2011-04-09 05:54:09
【问题描述】:
我正在尝试从子进程返回一个整数值。
但是,如果我使用exit(1),我会得到256 作为wait() 的输出。使用exit(-1) 得到65280。
有没有办法获得从子进程发送的实际 int 值?
if(!(pid=fork()))
{
exit(1);
}
waitpid(pid,&status,0);
printf("%d",status);
编辑:使用exit(-1)(这是我真正想要的)我得到255作为WEXITSTATUS(status)的输出。它应该是未签名的吗?
【问题讨论】:
-
我刚刚读到建议使用 exit() 而不是 _exit() 来完全终止,就在 stackoverflow.com 上
-
exit()与_exit()的使用无关紧要 - 退出状态的处理方式相同。使用exit()确保从标准I/O 通道和类似的清理问题中刷新待处理的输出 - 实际上,几乎一直使用exit()。有理由使用_exit(),但很少见。 -
是的
exit绝对是正确的。正如达蒙的回答所暗示的那样,您的问题不是exit,而是waitpid。