1
我有下面的代码可以让一个孩子分叉并执行命令“a”,这是一个未知的命令。但是,execvp不返回错误,而是打印“成功”。如果我做“mv b”,当文件“a”不存在时,会发生同样的事情。我应该如何捕获并处理这些错误?Execvp不会在未知命令上返回错误
int main (int argc, char **argv){
pid_t pid;
char *execArgs[] = { "a", NULL };
pid = fork();
// if fork fails
if (pid < 0){
exit(EXIT_FAILURE);
}
else if (pid == 0){
execvp(execArgs[0], execArgs);
if (errno == ENOENT)
_exit(-1);
_exit(-2);
}
else{
int status;
wait(&status);
if(!WIFEXITED(status)){
printf("error\n");
}
else{
printf("success\n");
}
}
}
请不要从你的问题删除代码 - 这是问题的一个重要组成部分,除去使它更难理解的答案(S)。 – 2014-10-20 16:13:31