我正在尝试编写一个名为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/