Windows和Linux管道有什麼區別?Windows和Linux管道之間有什麼區別?
14
A
回答
20
我知道的一個區別是Linux下的命名管道是文件系統中的實際條目(你會在目錄列表中看到它們,它們有一個特殊類型),而在Windows中它們存儲在一些神奇的(通過路徑「\\。\ pipe \」訪問它們全部)
其次,在Linux中,您可以使用標準文件IO方法直接從管道寫入/讀取,就好像它們是任何其他文件一樣。在Windows上,你必須使用屬於Win32 API的特殊「管道」功能。
我更喜歡linux的方法,因爲它可以讓我用任何我想要的應用程序使用管道,例如:
mkfifo pipe.wav
decodeMP3 song.mp3 --out pipe.wav &
encodeAVI video.mpeg pipe.wav --out video.avi
這使我可以將MP3解碼器的輸出直接傳輸到視頻解碼器,而不必先將整個MP3解碼成磁盤上的WAV文件。如果你有一個雙核CPU,這很方便,因爲這樣你就可以同時運行兩個操作,從而獲得不錯的加速。
5
在Linux(和* ix一般)下,「一切都是文件」。您可以在沒有限制的情況下讀取/寫入/查找管道和套接字和設備,只要這些操作合理。
儘管Windows對於這些不同類型的對象有着非常不統一的體系結構。雖然我不能告訴你細節,但我知道Windows和Linux之間管道的緩衝區有很大不同,所以你可能會遇到困難。另外,Unix-y管道的一個普通用途是fork()
一個子進程,然後通過一個管道(父進程打開一端,子進程打開另一端)與進程通信。在Windows下,這種事情是不可能的。 IPC機制完全不同。
3
1
另一個重要區別
在windows下
A | B | C
,直到完成了它的輸出噸B不開始讀取,同爲B輸出被C
讀取* nix的鉤的輸入和輸出在一起,使得C能夠讀取B的輸出和B可以讀取A的輸出,而A和B仍在運行
吞吐量大致相同,但使用* nix時輸出顯示更快。
相關問題
- 1. 管道和消息隊列之間有什麼區別?
- 2. ASP.NET4和ASP.NET5 Http管道之間有什麼區別?
- 3. 管道和插座有什麼區別?
- 4. Linux Windows之間的多任務,多線程有什麼區別?
- 5. 流和管道之間的區別是什麼C
- 6. 託管和非託管DLL之間有什麼區別
- 7. 「層」和「層」之間有什麼區別?
- 8. Tableau和QlikView之間有什麼區別
- 9. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 10. @Entity和@embeddable之間有什麼區別
- 11. ContentObservable和DataSetObservable之間有什麼區別?
- 12. touchmove和gesturechange之間有什麼區別?
- 13. :notification.flags和notification.defaults之間有什麼區別?
- 14. proc和lambda之間有什麼區別?
- 15. :: after和after之間有什麼區別?
- 16. read()和io.read()之間有什麼區別?
- 17. Request()和Request.Form()之間有什麼區別?
- 18. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 19. getA()和this.getA()之間有什麼區別?
- 20. (int)和intval()之間有什麼區別?
- 21. set_value和= pandas之間有什麼區別
- 22. * zoom和zoom之間有什麼區別?
- 23. {0}和「」之間有什麼區別?
- 24. typedef和using之間有什麼區別?
- 25. 「」和「'之間有什麼區別?
- 26. STDIN和tty之間有什麼區別?
- 27. +和%之間有什麼區別?
- 28. sysfs_create_file()和sysfs_create_group()之間有什麼區別?
- 29. Lazy.Force()和Lazy.Value之間有什麼區別
- 30. -existingObjectWithID:error:和-objectWithID之間有什麼區別?
Downvote。在Windows上,我可以使用CreateFile,ReadFile,WriteFile,ReadFileEx,WriteFileEx函數來命名管道。只有服務器必須使用CreateNamedPipe。有管道的功能用於管道創建和綁定的同步,但如果不需要聯網管道,可以使用命名的等待事件來替換這些功能。 – 2013-01-25 10:06:49
而Windows本地命名管道在下面使用內存映射文件。這意味着管道將數據存儲在內存或pagefile.sys中。 – 2013-01-25 10:14:17