如何将结构从执行中的一个程序传递到其他程序的可执行文件并返回一些字符串

时间:2017-09-26 12:18:09

标签: c linux system-calls

我有两个程序,假设 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;
}

1 个答案:

答案 0 :(得分:1)

您可以使用popen()启动prog2,然后让prog2使用printf()或类似内容将字符串写入其标准输出。然后,prog1可以从popen()创建的管道中读取。