execvp找不到程序时返回错误
我知道这段代码有点凌乱,但请容忍我:我正在尝试创建自己的shell。这个函数将启动一个新的子进程并执行代码。但是,在键入字符串时无法返回错误 例如,如果我键入'heyman',我只返回'heyman',而我想返回某种错误('heyman'不是命令) 我希望退出(退出失败)能做到这一点,但它没有做到。如果有人能在这里帮助我使用execvp找不到程序时返回错误,c,linux,unix,fork,exec,C,Linux,Unix,Fork,Exec,我知道这段代码有点凌乱,但请容忍我:我正在尝试创建自己的shell。这个函数将启动一个新的子进程并执行代码。但是,在键入字符串时无法返回错误 例如,如果我键入'heyman',我只返回'heyman',而我想返回某种错误('heyman'不是命令) 我希望退出(退出失败)能做到这一点,但它没有做到。如果有人能在这里帮助我使用peror()报告错误,我将不胜感激 int spawn( char* program, char** args) { pid_t child_pid; child_pid
peror()
报告错误,我将不胜感激
int spawn( char* program, char** args) {
pid_t child_pid;
child_pid = fork();
if( child_pid > 0) { /
wait(NULL);
return (int)child_pid;
}
else {
if(execvp(program, args) == -1){
exit(EXIT_FAILURE);
}
return (int)child_pid;
}
}
在子函数中不需要使用return(int)child\u pid
。如果execvp();如果失败,则报告错误并退出。使用peror()
报告错误
int spawn( char* program, char** args) {
pid_t child_pid;
child_pid = fork();
if( child_pid > 0) { /
wait(NULL);
return (int)child_pid;
}
else {
if(execvp(program, args) == -1){
exit(EXIT_FAILURE);
}
return (int)child_pid;
}
}
在子函数中不需要使用return(int)child\u pid
。如果execvp();如果失败,则报告错误并退出。有效。你能告诉我你是怎么知道的或者是从哪里找到的吗?我想知道一个可以用于linux编程的源代码,而不是不断地问问题。我在哪里学到了peror()
?我不记得了,我知道这件事已经20多年了。任何一本像样的Unix编程教科书都应该有它,这很管用。你能告诉我你是怎么知道的或者是从哪里找到的吗?我想知道一个可以用于linux编程的源代码,而不是不断地问问题。我在哪里学到了peror()
?我不记得了,我知道这件事已经20多年了。任何一本像样的Unix编程教科书都应该有它。