如何将结构从一个正在执行的程序传递到另一个程序的可执行文件和 return 一些字符串
How to pass a structure from one program in execution to other program's executable and return some string
我有两个程序假设 prog_1 和 prog_2。 prog_1 在执行期间同时使用 fork()
和 exec()
来调用 prog_2。它将一些参数作为 char *argv[]
数组传递给 prog_2 的 main()
函数。 prog_2 成功接收这些参数。
我真正想要的是,将一些结构传递给 prog_2 而不是通过 prog_2[=32 写入文件=] 和 return 一些字符串,例如“成功完成”。因为我正在使用 exec()
所以,我知道我不能 return 任何字符串。有什么办法可以在两个程序之间进行这种双向通信。
我所做的示例代码。
/*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;
}
您可以使用 popen()
启动 prog2
然后让 prog2
使用 printf() 或类似方法将字符串写入其标准输出。 prog1
然后可以从 popen()
创建的管道中读取。
我有两个程序假设 prog_1 和 prog_2。 prog_1 在执行期间同时使用 fork()
和 exec()
来调用 prog_2。它将一些参数作为 char *argv[]
数组传递给 prog_2 的 main()
函数。 prog_2 成功接收这些参数。
我真正想要的是,将一些结构传递给 prog_2 而不是通过 prog_2[=32 写入文件=] 和 return 一些字符串,例如“成功完成”。因为我正在使用 exec()
所以,我知道我不能 return 任何字符串。有什么办法可以在两个程序之间进行这种双向通信。
我所做的示例代码。
/*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;
}
您可以使用 popen()
启动 prog2
然后让 prog2
使用 printf() 或类似方法将字符串写入其标准输出。 prog1
然后可以从 popen()
创建的管道中读取。