确定execvp是成功还是失败
问题描述:
我正在寻找一种方法来确定函数execvp是成功还是失败。我知道如果它返回那么它失败了,但我正在寻找从execvp启动的命令失败的情况。例如在“ls”试图列出不存在的文件夹的情况下。由此我计划添加对逻辑运算符的支持(例如& &,||)。谢谢。确定execvp是成功还是失败
else {
int status;
if (wait(&status) < 0) {
perror("wait failed");
exit(0);
}
if (status == 0) {
success = true;
}
else {
success = false;
}
}
答
您需要首先fork()
一个新的进程,然后有新的进程调用execvp
。然后父进程应该调用wait()
,这将允许它检索您运行的命令的退出状态(在这种情况下为ls
)。
当检查从wait()
检索到的返回状态时,请确保使用WIFEXITED()
确保孩子正常退出,并使用WEXITSTATUS()
提取退出状态。
现在我有这个,在我的检查结束,看看叉是否失败。但我不认为我正在寻找来自地位的正确信息。 'else if(c_pid> 0){0} {pid = waitpid(c_pid,&status,0); if(pid == -1){perror(“wait failed”); \t exit(0); \t} if(status == 0){ \t success = true; \t} success = false;如果((pid = wait(&status)) xythyl
@xythyl使用您的代码更新您的问题。在评论中阅读是不可能的。 – dbush
谢谢!另外,如何正确地在这里发布代码?出于某种原因,它没有保存任何格式。 – xythyl