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

标签 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

最佳答案

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

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

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

关于c - 不确定如何解析参数并利用 excevp 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52880412/

相关文章:

c - 尝试在 C 中动态分配多维数组会导致崩溃

c - 使用 union 存储的值显示不正确

c - 我如何使用 16 位整数类型?

c - 在 main 中等待 execvp

c - 双指针作为 execvp() 的参数

c++ - 为支持 CNAME 记录的 A 记录配置 TTL

c - 从子进程运行命令

c - 在 fork/execvp 控制不返回父级之后

c - Execvp 与 "ls -l | wc"一起工作,但因“ls -l|wc”而失败

我们可以打印这样的数组吗?