我遇到了一些关于 execve 的问题。我正在尝试制作一个可以像 bash shell 一样运行的 shell,但是我在分叉子执行命令时遇到了问题。这是我为孩子准备的。cmd 是带有用户输入的命令的字符 *。但是,当我运行此程序时,我从 perror 收到此错误:
execve error: No such file or directory.
我用一个简单的 ls 尝试了该程序,它应该使 path="/bin/ls" 并执行它(我已经确认这是我的 ls 命令所在的位置)但它仍然抱怨。我究竟做错了什么?谢谢!
if(pid == 0)
{
// Parse the command
char * word = strtok(cmd, " ");
char path[128] = "/bin/";
strcat(path, word);
// Execute the process
char * newenvp[] = { NULL };
char * newargv[] = { path, NULL };
ret = execve(path, newargv, newenvp);
if(ret == -1)
perror("execve error");
return EXIT_SUCCESS;
}