我想知道命令是否成功运行而没有错误。我在尝试:
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
是参数的链接列表
答案 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.
}