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