不确定如何解析参数并利用excevp函数

时间:2018-10-18 18:31:53

标签: c execvp

我正在尝试编写一个名为 Generate 的程序,该程序基本上创建一个子进程来执行特定的进程并打印有关该进程执行的统计信息

假设我在终端上的输入是./Generate ./a 123 234

  • 我知道我可以使用main(int args, char **argv)收集输入。
  • 我知道argv[0] = ./Generate,argv[1],=。/ a,argv[2] = 123,argc[3] = 1234。
  • 我创建了一个子进程,并希望它使用功能execvp()来执行./a 123 234.

我将如何做同样的示例:

if (pid == 0){
    execvp(a[0],a); // I want 'a' here to contain my input

1 个答案:

答案 0 :(得分:1)

假设传递给您程序的所有参数都是要调用的程序的命令行,则可以执行以下操作:

execvp(argv[1], &argv[1]);

由于argv是一个指针数组,因此&argv[1]为您提供了指向该数组中第二个元素的指针,因此其余元素将紧随其后。