假设我做了类似的事情
cat afile [ | possibly awk or similar to process the file] | sort
我知道数据流是这样的
afile -- stdout -- os buffer -- stdin -- sort
当尺寸afile
较小时,也许sort
可以获取全部内容并对其进行排序。
然而,当文件很大时,数据必须以块的形式流动。
我知道管道进程是并发运行的,因此 sort 可能会接收数据并将它们迭代地存储在某个地方。
sort
在排序之前是否等待接收所有数据?
可能将它们写入文件。
然后处理这些文件?
我想这个问题可以应用于其他命令,而不是sort
需要整个数据才能操作。
(当linux命令通过管道接收大数据并且必须获取整个数据才能执行时,它如何运行?但是这可能是一个太笼统的问题了..)