命名管道
管道(匿名管道)的使用局限性大,这与管道的实现机制有关。而命名管道(Named Pipe)不仅可在同一台计算机的任意不同进程之间通信,而且还可以在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信。
命名管道不同于管道之处在于它提供一个路径名与之关联,以命名管道的文件形式存在于文件系统中。这样,即使与命名管道的创建进程不存在亲缘关系的进程,只要能够访问该路径,就能够彼此通过命名管道相互通信。简单来说,虽然管道和命名管道都是实实在在的文件,但前者没有公开的文件名,用户在文件系统中不能直接观察并访问到它;命名管道则是存在于文件系统中的,任何具有访问权限的进程都可以访问。
管道和命名管道的区别总结如下:
·命名管道可以用于任意两个进程间的通信,并不限制这两个进程同源,因此命名管道的使用比管道的使用要灵活方便得多。
·命名管道作为一种特殊的文件存在于文件系统中,而不像管道一样只存在于内存中(使用完毕就会消失)。当进程对命名管道的使用结束后,命名管道依然存在于与文件系统中,除非对其进行删除操作,否则不会消失。
需要注意的是,命名管道是一种严格遵循FIFO规则,不支持lseek函数等文件定位操作。