如何将结构从一个正在执行的程序传递到另一个程序的可执行文件和 return 一些字符串

How to pass a structure from one program in execution to other program's executable and return some string

我有两个程序假设 prog_1prog_2prog_1 在执行期间同时使用 fork()exec() 来调用 prog_2。它将一些参数作为 char *argv[] 数组传递给 prog_2main() 函数。 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() 创建的管道中读取。