我有两个程序,假设 prog_1 和 prog_2 。 prog_1 在执行期间一起使用fork()
和exec()
来调用 prog_2 。它将一些参数传递给 prog_2 的main()
函数作为char *argv[]
数组。 prog_2 成功收到这些参数。
我真正想要的是,将一些结构传递给 prog_2 ,然后通过 prog_2 写一个文件并返回一些字符串,如" 成功完成&#34 ;.因为我使用exec()
所以,我知道我不能返回任何字符串。我们有什么方法可以在两个程序之间进行这种双向通信。
示例代码我所做的是。
/*prog_1*/
pid_t pid = fork();
if (pid == 0) { /* child process */
static char *argv[] = {"pro2", "Foo is my name.", NULL};
execv("/home/sungmin/pro2", argv);
exit(127); /* only if execv fails */
}
else {
waitpid(pid, 0, 0); /* wait for child to exit */
}
/*prog_2*/
int main(int argc, char *argv[])
{
int i;
for (i = 0; i < argc; i++)
printf("value passed is %s\n", argv[i]);
return 0;
}
答案 0 :(得分:1)
您可以使用popen()
启动prog2
,然后让prog2
使用printf()或类似内容将字符串写入其标准输出。然后,prog1
可以从popen()
创建的管道中读取。