我希望调用一个子进程,其中包含已经打开到给定管道的文件描述符,以便open()调用不会因等待管道另一端接收连接而挂起。
举个例子:
在这种情况下,只有当某个进程以写方式打开
通过执行替代脚本语言(python、perl等)或使用打开
举个例子:
$ mkfifo /tmp/foobar.pipe
$ some_program --command-fd=5 5</tmp/foobar.pipe
在这种情况下,只有当某个进程以写方式打开
/tmp/foobar.pipe
时,才会运行 some_program
; 然而,即使没有接收到命令,some_program
也具有有用的效果,因此期望的行为是立即执行 some_program
。通过执行替代脚本语言(python、perl等)或使用打开
/tmp/foobar.pipe
时带有 O_NONBLOCK
标志的 C 包装器来实现这一点的机制是显而易见的;我正在寻找一个纯 bash 解决方案,如果可能的话。