0

我想将一些参数从一个程序传输到另一个程序。

例如,这里有两个程序。ac 编译为

#include <stdio.h>

int main() {
    char a[10];
    scanf("%s", a);
    printf("%s\n", a);
    return 0;
}

和 ec 编译为 e:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

int main() {
    char *input = "here it is";
    execl("./a", "a", "a",  NULL);
    return 0;
}

实际上,我想将参数“a”从 ec 传输到 ac,这样一旦我执行程序“e”,它就会打印出来

 a
 a

但是,我发现excel无法将参数传递给指定的程序。

如果我无法修改程序 ac,我如何使用另一个使用标准输入的程序执行该程序?

4

1 回答 1

0

如果无法修改a.c,则需要将数据写入某个文件,然后重置标准输入以从该文件中读取:

FILE *fp = fopen("somefile", "w");
if (fp == NULL)
    // handle error
fputs(input, fp);
fclose(fp);

if (freopen("somefile", "r", stdin) == NULL)
    // handle error
unlink("somefile");
execl("./a", "a", NULL);

系统unlink调用确保文件在a完成后消失。

注意:您可能可以使用管道而不是文件,因为消息太小以至于它可以放入管道的缓冲区中。但是,对于较大的消息,这不是一个可靠的解决方案——如果你想使用管道,你需要fork.

于 2013-01-23T18:04:16.803 回答