我的代码在Mac上运行,我从exec获得255返回代码.以下是代码:
ret = execvp(pArgs[0], pArgs);
if (ret < 0)
{
ret = errno;
exit(ret);
return false;
}
else if (processId < 0)
{
// fork() failed
return false;
}
else if(Wait)
{
// forked successfuly so wait for exit
if(waitpid(processId, &childstatus, 0) == processId)
{
// codesign command terminted, get return code
if(WIFEXITED(childstatus))
{
if(pCmdRetStatus != NULL)
*pCmdRetStatus = WEXITSTATUS(childstatus);
}
}
}
Run Code Online (Sandbox Code Playgroud)
有关为什么255的任何想法?本质上是一个hdiutil调用,很多次,我得到255.
mae*_*ics 12
UNIX(以及因此Mac OS X)退出状态被强制进入0-255无符号范围.
因此-1,您的调用的返回值execvp将在C代码中处理为-1,但由于函数规范的规则,将exit()在操作系统级别变为255 .请考虑以下示例:
bash> bash
bash2> exit -1
bash> echo $? # The exit status of the last command (bash2)
255
Run Code Online (Sandbox Code Playgroud)