如何使用与“ execvp()”相对的“ execv()”?

时间:2019-02-21 22:45:02

标签: c

这是一小段代码,用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;
}

0 个答案:

没有答案