bash – 如何避免回声关闭FIFO命名管道? – Unix FIFO的有趣行
发布时间:2020-12-15 09:22:05 所属栏目:安全 来源:网络整理
导读:我想要输出一些数据到管道,让另一个进程对数据逐行做一些事情。这里是一个玩具示例: mkfifo pipecat pipecat pipe 现在我可以输入任何我想要的,然后按enter键我立即看到同一行。但是如果用echo替换第二个管道: mkfifo pipecat pipeecho "some data" pipe
我想要输出一些数据到管道,让另一个进程对数据逐行做一些事情。这里是一个玩具示例:
mkfifo pipe cat pipe& cat >pipe 现在我可以输入任何我想要的,然后按enter键我立即看到同一行。但是如果用echo替换第二个管道: mkfifo pipe cat pipe& echo "some data" >pipe 管道在回声和猫管道之间关闭。完成,使我不能通过管道传递任何更多的数据。有没有办法避免关闭管道和接收数据的进程,以便我可以通过管道从bash脚本传递许多行数据,并在他们到达时处理它们?
当FIFO被打开用于读取时,它阻塞调用进程(通常)。当进程打开FIFO进行写入时,读取器被解锁。当写入器关闭FIFO时,读取进程获得EOF(读取0个字节),除了关闭FIFO并重新打开之外,没有什么可以做的事情。因此,你需要使用一个循环:
mkfifo pipe (while cat pipe; do : Nothing; done &) echo "some data" > pipe echo "more data" > pipe 另一种方法是在FIFO打开时保持一些进程。 mkfifo pipe sleep 10000 > pipe & cat pipe & echo "some data" > pipe echo "more data" > pipe (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- # WebService (三)SMTP邮件发送功能
- Opencart &Bootstrap&Android&IOS&
- scala – Hashtable(int)比Hashtable(Map)更具体
- shell – 如何获取一个挂起的Perforce更改列表中的所有文件
- bash – 检查文件所有者权限
- scala – 不同子项目中的Play Framework演变
- angularjs – 如何将常规用户名/密码登录与第三方社交登录集
- 详解Shell 命令行批量处理图片文件名的实例
- scala – @BeanProperty支持PropertyChangeListener?
- 如何在角度2中进行全局搜索?