我读到了有关管道和流的内容,但我仍然对它的实现方式感到困惑。
程序启动并从“标准输入”流(stdin)读取数据,这是键盘发送数据的地方。
我的问题是,它与管道有什么不同?管道允许我有一个进程将数据发送到管道,另一个进程正在从中读取数据。
当按下键盘时,数据被发送到标准输入,并且程序正在从同一流中读取数据。
一旦数据发送到该流,就会执行“读”操作,就像管道一样。
这些流是通过管道传输的吗?
答案1
答案2
从技术角度来看,这可能并不完全准确,但可能会帮助您解决困惑。我倾向于将流视为程序固有的东西,例如 STDIN、STDOUT 和 STDERR,而管道是程序外部的。例如,在命令 中cat foo.txt | grep bar
,cat
命令发送到其固有的 STDOUT,然后外部管道将其连接到grep
其固有的 STDIN。