为什么unistd.h execvpe无法在macOS上工作?

问题描述 投票:0回答:1

我有以下代码,其中我正在使用unistd.h的execve在C程序中执行另一个程序:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char** argv) {
  //  char *env_init[] = {"USER=unknown", "PATH=/tmp", NULL};

  char* username = argv[1];
  char* program = argv[2];

  printf("username: %s\n", username);
  printf("program: %s\n", program);


  if (execvp(program, argv + 2) < 0)
    printf("error");
  return 0;
}

并且运行正常。但是,当我尝试将环境放入程序中并使用execvpe运行程序时,如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char** argv) {
  char *env_init[] = {"USER=unknown", "PATH=/tmp", NULL};

  char* username = argv[1];
  char* program = argv[2];

  printf("username: %s\n", username);
  printf("program: %s\n", program);


  if (execvpe(program, argv + 2, env_init) < 0)
    printf("error");
  return 0;
}


我收到以下错误:

runas.c:18:7: error: implicit declaration of function 'execvpe' is invalid in C99
      [-Werror,-Wimplicit-function-declaration]
  if (execvpe(program, argv + 3, env_init) < 0)

我该如何解决?

c exec
1个回答
0
投票

您可以在man page for execvpe中读取:

© www.soinside.com 2019 - 2024. All rights reserved.