我正在尝试编写一个名为 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
答案 0 :(得分:1)
假设传递给您程序的所有参数都是要调用的程序的命令行,则可以执行以下操作:
execvp(argv[1], &argv[1]);
由于argv
是一个指针数组,因此&argv[1]
为您提供了指向该数组中第二个元素的指针,因此其余元素将紧随其后。