【发布时间】:2015-02-13 17:46:43
【问题描述】:
这就是我 fork/exec 一个子进程并与之通信的方式(伪代码):
int cout_pipe[2];
pipe(cout_pipe);
fork();
if (child)
{
dup2(cout_pipe[1],STDOUT_FILENO);
execv();
}
if (parent)
{
File* cout_file = fdopen(cout_pipe[0], "r");
}
我的问题是:
我真的不想读取子进程的标准输出,我希望子进程在标准输出以外的文件描述符上写入。而且,我希望从该文件描述符中读取上述代码。
子进程用python写,主进程用C++写。
我想我可以改变那行,从:
dup2(cout_pipe[1],STDOUT_FILENO);
到
dup2(cout_pipe[1],MY_OWN_RANDOM_FD_NUMBER);
并以我写入 MY_OWN_RANDOM_FD_NUMBER 而不是标准输出的方式对子进程进行编码。
这是一个好的解决方案吗?可行吗?我怎样才能找出一个好的 MY_OWN_RANDOM_FD_NUMBER?有更好的选择吗?
【问题讨论】: