我需要一个看起来像这样的输入
./a.out <exe> <arg1> ... <argn> <others_stuff>
哪里<exe> <arg1> ... <argn>
是我必须作为单独进程执行的输入(目标是将 exe 的输出保存到 txt 中)。
将输出保存到 txt 文件中不是问题,我只需重定向 stdout(使用 dup2、freopen 或类似的东西)即可。
问题是只执行了 argv 的一部分!因为 exec 的系列函数(它们太多了!)让我们给出整个 argv 作为输入,或者指定每个 arg。 我写在这里是因为我无法解决这个问题,所以我希望你能帮助我(我用谷歌到处搜索但没有成功)。
编辑:我忘了说我无法使用系统来执行命令!
最佳答案
如果您想使用 argv 的连续部分,您有两个选择,您可以(正如您尝试过的那样)创建一个新的 arg 数组,并按如下方式正确填充它:
char *params[argc-2];
memcpy(params, argv+1, sizeof params);
params[argc-3] = NULL;
execvp(*params, params);
你可以直接粉碎argv
argv[argc-3] = NULL;
execvp(argv[1], argv+1);
或者,如果您没有太多参数,您可以使用execlp
:
execlp(argv[0], argv[0], argv[3], argv[2], argv[4], NULL);
关于c - 使用仅带有 argv 的某些参数的 exec(使用 C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10784943/