当用作管道的一部分时,“cat”如何处理大文件?

Nee*_*hwa 1 memory pipe files cat

假设我cat有一个大小为 10 GB 的文件,并且我通过管道将其传输到headcat如果我的系统只有 2 GB 的 RAM 和 1 GB 的交换空间,它会工作吗?我想知道内部细节。

Cel*_*ada 5

cat不需要记住它已经从输入发送到输出的文件的任何部分。换句话说,它使用O(1)内存。

head也不需要记住它已经发送的文件部分,它只需要计算它们。此外,它甚至不需要读取整个输入;当达到输出请求的行数时,它可以停止。