我有一個寫入命名管道和另一個從管道讀取的腳本。偶爾,在啓動腳本時,我注意到管道的內容是從前面的腳本運行中存在的。有沒有辦法在腳本的開頭刷新管道?如何使用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