2011-02-28 38 views

回答

6

在可能的情況下使用pipe,除非您希望大量輸入在流中堆積而不被讀取。管道將數據保存在RAM中臨時文件需要文件系統操作的地方。文件上的fdsync將比在管道上昂貴得多。管道也較不容易受到競爭條件引起的安全問題的影響。

如果您的應用程序無法使用管道語義(需要文件系統路徑用於其輸出或類似問題),請嘗試使用「命名管道」(也稱爲FIFO)。

+2

請注意,Linux上的管道是作爲pipefs文件系統實現的。另外,tmpfs上的文件(通常掛載在/ dev/shm上)駐留在內存中。 – 2011-02-28 13:30:26

0

如果管道沒有一個主要缺點:固定緩衝區大小,管道將是完美的。當使用管道時,緩慢的消費者會對生產者進行節流,從而導致生產者產生過多的上下文切換...

0

管道的主要缺點是它不可查找,即消費者無法跳過或倒帶。如果數據交換不需要這個屬性,那麼管道是更好的選擇。