这是一小段代码,用C语言创建了一个shell。
所以我可以使这段代码在execvp上正常运行,但是当我使用execv时,我在使用ls时遇到了麻烦。
我尝试了execv(“ / bin / ls” + * args [0],args)和execv(“ / bin /” + * args [0],args),但这不起作用。
我尝试了whereis ls并返回了
ls:/ bin / ls /usr/share/man/man1/ls.1posix.gz /usr/share/man/man1/ls.1.gz
int lsh_launch(char **args)
{
pid_t pid, wpid;
int status;
pid = fork();
if (pid == 0) {
// Child process
if (execvp(args[0], args) == -1) {
perror("lsh");
}
exit(EXIT_FAILURE);
} else if (pid < 0) {
// Error forking
perror("lsh");
} else {
// Parent process
do {
wpid = waitpid(pid, &status, WUNTRACED);
} while (!WIFEXITED(status) && !WIFSIGNALED(status));
}
return 1;
}