C - execve()在命令错误时没有返回-1

时间:2016-03-17 15:38:34

标签: c posix

我想知道命令是否成功运行而没有错误。我在尝试:

if (execve(buf, pl->argv, environ) != -1) { 
    perror(buf);
    laststatus = 1;
}

在诸如“lss”的情况下,我会回来-1。但是诸如“ls fs”(无效)之类的情况,ls会打印出错误,但execve会返回成功。

当传递给execve的命令成功执行或失败时,如何将laststatus设置为0或1。

额外:

buf是命令名称(本例中为“ls”)

pl->args是参数的链接列表

1 个答案:

答案 0 :(得分:1)

感谢您的帮助!

对于其他人,我使用以下命令,如果来自execve的命令失败,则返回非零值。

    // in parent
    wait(&statval);
    if(WIFEXITED(statval)) {
        if (WEXITSTATUS(statval) == 0)
            laststatus = 0; // command in execve exited with 0
        else
            laststatus = 1; // command exited with non-zero.
    }