当前位置:  开发笔记 > 运维 > 正文

Windows和Linux中的管道有什么区别?

如何解决《Windows和Linux中的管道有什么区别?》经验,为你挑选了2个好方法。

Windows和Linux中的管道有什么区别?



1> davr..:

我所知道的一个区别是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,这很方便,因为那时你同时运行两个操作,以获得良好的加速.



2> Dan Lenski..:

在Linux下(和*ix一般),"一切都是文件".只要这些操作有意义,您就可以无限制地读/写/寻找管道和插座以及设备.

而Windows对于这些不同类型的对象具有远不那么统一的架构.虽然我无法告诉你细节,但我知道Windows和Linux之间的管道缓冲有很大不同,所以你可能会遇到困难.

此外,一个常见的Unix-y管道使用是fork()对子进程,然后通过管道与它通信(父进程打开一端,子进程打开另一端).在Windows下,这种事情是不可能的.IPC机制完全不同.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有