我想寫程序創建子進程,並將其stdout和stderr流重定向到父級。那麼爲了獲得良好性能tmpfile()或pipe(),爲什麼這樣做會是一個好的選擇?爲什麼?管道vs tmfiles。什麼更好,爲什麼?
4
A
回答
6
在可能的情況下使用pipe
,除非您希望大量輸入在流中堆積而不被讀取。管道將數據保存在RAM中臨時文件需要文件系統操作的地方。文件上的fdsync
將比在管道上昂貴得多。管道也較不容易受到競爭條件引起的安全問題的影響。
如果您的應用程序無法使用管道語義(需要文件系統路徑用於其輸出或類似問題),請嘗試使用「命名管道」(也稱爲FIFO)。
0
如果管道沒有一個主要缺點:固定緩衝區大小,管道將是完美的。當使用管道時,緩慢的消費者會對生產者進行節流,從而導致生產者產生過多的上下文切換...
0
管道的主要缺點是它不可查找,即消費者無法跳過或倒帶。如果數據交換不需要這個屬性,那麼管道是更好的選擇。
相關問題
- 1. 管道的剩菜有什麼好處?
- 2. JavaEE vs PHP - 爲什麼這麼多人認爲Java更好?
- 3. loadModel()VS requestAction()VS constructClasses()。哪個更好,爲什麼?
- 4. 什麼是扁平捆綁,爲什麼Rollup比Webpack更好?
- 5. 這個管道爲什麼終止?
- 6. 爲什麼要使用內容管道
- 7. 爲什麼管道不工作?
- 8. 爲什麼groupBy瓶頸我的管道?
- 9. 這個gstreamer管道爲什麼失速?
- 10. 爲什麼`timeout`不適用於管道?
- 11. Scrapy:爲什麼要使用管道?
- 12. 爲什麼「管道」CharBuffer掛起?
- 13. 爲什麼沒有維基管道?
- 14. 爲什麼不用管道排序?
- 15. 爲什麼LuaJIT這麼好?
- 16. 什麼是靜態庫,什麼是動態庫,有什麼區別,什麼是更好的使用,爲什麼?
- 17. 爲什麼ArrayDeque比LinkedList更好
- 18. 爲什麼Sass好?
- 19. 什麼意思爲什麼「寫得好」?
- 20. 匿名函數vs命名函數哪個更好,爲什麼
- 21. mongoose vs mongodb(nodejs modules/extensions),哪個更好?爲什麼?
- 22. 爲什麼選擇spefic網站更好?
- 23. Mustache.js vs Mustache.net。什麼更快?
- 24. 哪些SQL查詢更好,爲什麼?
- 25. 數據庫 - 哪個更好,爲什麼?
- 26. 什麼是更好的oo設計方案,爲什麼?
- 27. 什麼比邊框更好?
- 28. 爲什麼mysql count(*)比count更好(id)
- 29. 重定向VS管 - 爲什麼它的工作原理和爲什麼它不
- 30. dispatch_async爲什麼不好?完成相同任務的更好方法是什麼?
請注意,Linux上的管道是作爲pipefs文件系統實現的。另外,tmpfs上的文件(通常掛載在/ dev/shm上)駐留在內存中。 – 2011-02-28 13:30:26