加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在bash中设置从命名管道读取的管道而不阻塞

发布时间:2020-12-15 18:59:18 所属栏目:安全 来源:网络整理
导读:我正在寻找一个子进程,其中一个文件描述符被打开到给定的管道,这样open()调用就不会挂起,等待管道的另一端接收连接. 展示: $mkfifo /tmp/foobar.pipe$some_program --command-fd=5 5/tmp/foobar.pipe 在这种情况下,some_program直到某个进程打开/tmp/foobar
我正在寻找一个子进程,其中一个文件描述符被打开到给定的管道,这样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等)或使用O_NONBLOCK标志打开/tmp/foobar.pipe的C包装器来执行此操作的机制是显而易见的;我正在寻找一种纯粹的bash解决方案,如果有可能的话.

在设置管道时打开FD读/写而不是只读可防止阻塞.

更具体一点:

$mkfifo /tmp/foobar.pipe
$some_program --command-fd=5 5<>/tmp/foobar.pipe

防止不希望的阻塞行为,因为5<> / tmp / foobar.pipe在RW模式下打开(与在5< /tmpobfo.pipe中以只读模式打开相反),尽管O_NONBLOCK仍然设置.感谢waldner on irc://irc.freenode.org/#bash这个指针.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读