【发布时间】:2014-10-21 00:12:37
【问题描述】:
我有以下代码分叉一个孩子并执行命令“a”,这是一个未知命令。但是, execvp 不返回错误,而是打印“成功”。如果我执行“mv a b”,当文件“a”不存在时,也会发生同样的事情。我应该如何捕捉和处理这些错误?
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");
}
}
}
【问题讨论】:
-
请不要从您的问题中删除代码 - 这是问题的关键部分,删除会使答案更难理解。