我有一个写入命名管道和另一个从管道读取的脚本。偶尔,在启动脚本时,我注意到管道的内容是从前面的脚本运行中存在的。有没有办法在脚本的开头刷新管道?如何使用bash冲刷管道
7
A
回答
5
我觉得dd
是你的朋友:
dd if=myfifo iflag=nonblock of=/dev/null
strace的显示
open("myfifo", O_RDONLY|O_NONBLOCK)
,事实上甚至没有一个空的FIFO存储块。 “设置当管道可防止堵塞打开FD读/写,而不是只读”。
:
1
您可以从管道读取,直到它为空。这将有效地冲洗它。
在你尝试这个大胆的壮举之前,请拨fcntl(mypipe, F_SETFL, O_NONBLOCK)
(我不知道shell脚本等价物)在管道是空的时候进行读取而不是挂起你的程序。
1
相关问题
- 1. bash中的缓冲管道
- 2. 如何刷新协处理管道中的I/O缓冲区
- 3. Python bash管道
- 4. 如何使用bash命令列出进程使用的管道
- 5. Bash:用管道销毁
- 6. 在bash函数中使用管道
- 7. Bash:管道到eog
- 8. 在bash shell中如何实现管道?
- 9. 如何管道输入到Java程序使用bash
- 10. 如何在bash中使用条件管道过滤器?
- 11. 如何在使用网络管道时刷新网络流?
- 12. 解释最后冲刺在bash /管道表达
- 13. 管道到Bash在C
- 14. bash + c管道参数
- 15. bash脚本和管道
- 16. bash的管道与SIGTERM
- 17. Bash管道和Shell扩展
- 18. 运行管道bash脚本
- 19. 崩溃停止bash管道
- 20. 冲洗管道的缓冲区
- 21. Python - 如何用管道调用bash命令?
- 22. 如何使python脚本在bash和python中都能管道化
- 23. Perl,用管道执行bash命令
- 24. 如何连接用户自定义的bash函数与管道
- 25. 在使用zenity的bash脚本中 - 进度条从管道读取,如何安全地杀死管道进程?
- 26. 如何使rsyslogd刷新其缓冲区
- 27. 使用管道
- 28. 使用管道
- 29. 使用管道
- 30. Django频道:如何刷新发送缓冲区
困惑,这不是bash的是什么呢? – 2017-07-08 03:46:04
不是使用bash-builtin命令/功能,而是使用标准unix工具的shell脚本解决方案。 – mvds 2017-07-08 04:47:35