exec返回255

rez*_*eza 2 c unix

我的代码在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)