我正在寻找一个打开给定管道的文件描述符的子进程,这样 open() 调用不会挂起等待管道的另一端接收连接。
展示:
$ mkfifo /tmp/foobar.pipe
$ some_program --command-fd=5 5</tmp/foobar.pipe
在这种情况下,some_program
直到某个进程/tmp/foobar.pipe
打开以供写入,才会运行;然而,some_program
即使它没有接收命令也有有用的效果,因此所需的行为是some_program
立即执行。
通过另一种脚本语言(python、perl 等)或以标志打开的 C 包装器执行此操作的机制/tmp/foobar.pipe
是O_NONBLOCK
显而易见的;如果可能的话,我正在寻找一种纯 bash 解决方案。