如何将文件描述符从coproc传递到另一个进程?

时间:2019-03-14 22:12:46

标签: bash file-descriptor

我已经阅读了有关I / O重定向的bash文档。我在macOS上运行GNU bash 5.0.2。我关于文件描述符如何在这里工作的思维模型显然缺少了一些东西,但是我还不太清楚。

方案:我有一个二进制文件(名为“ ./hello”),该文件在固定文件描述符上输出一行文本。

int main() {
   write(25, "Hello\n",6);
   return 0;
}

我不想编辑该程序。我想让它以已经打开的fd 25开始。

为完成这项工作,我启动了另一个程序,该程序从stdin读取并进行一些处理。

coproc ./processor
[1] 38642

为了将这两件事结合在一起,我尝试过:

# This does not work, but I wish it would.
./hello 25>&${COPROC[1]}

执行此操作时,处理器未收到任何输入。但是,可以进行以下操作:

 # This works.
 date >&${COPROC[1]}

以下内容也适用:

 # This works.
 ./hello 25>test.txt
 cat test.txt
 Hello

据我了解,在fork()时会保留fd,因此应该在子进程上打开fd 25吗?

0 个答案:

没有答案