用户1091856
我读到了有关管道和流的信息,但我仍然对其实现方式感到困惑。
启动一个程序,它从键盘向其发送数据的“标准输入”流(stdin)中读取数据。
我的问题是,与管道有何不同?管道允许我有一个将数据发送到管道的进程,而另一个进程正在从该管道读取数据。
按下键盘后,数据将发送到stdin,并且程序正在从同一流中读取数据。
就像管道一样,一旦将数据发送到此流,就会执行“读取”操作。
这些流是否通过管道传输?
马克·普洛特尼克
Unix终端I / O传统上已实现为某种队列。较旧的内核使用了clists。V8 Unix使用了流。在大多数情况下,使用clists和流来实现用户进程(特别是文件描述符)和字符设备驱动程序(例如,串行端口或pty)之间的链接的一部分。
管道也是一个队列,但是它们链接用户进程(特别是一对文件描述符)。管道的实现方式多种多样,包括插座;特殊类型的文件;甚至STREAMS(STREAMS是V8流的衍生版本。)
因此,流和管道都是队列的实现,但是它们用于不同的情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
编辑于
我来说两句