管道是进程之间的通信服务,它是把一个命令的输出作为另一个命令的输入的机制.Shell通过打开和关闭文件说明符来建立管道,但不是分配文件说符而是通过pipe系统调用建立和分配一个管道说明符,一个进程向管道写,其他进程可以从管道读取.管道只是kernel内的一块可以被两个进程同享的缓冲区,这样的好处是不再需要建立用于交互的临时文件.在说明符建立以后,命令是同步执行的.一个命令的输出被送到缓冲区内,当命令结束或者缓冲区被装满以后,管道另外一侧的命令从缓冲区内读取.kernel负责同步这些活以保证一个进程在读或者写缓冲区的时候,其他的进程处于等待状态.
阅读(502) | 评论(0) | 转发(0) |