管道如何在Linux中工作
我一直在阅读有关如何在Linux内核中实现管道的信息,并希望验证我的理解。如果我不正确,将选择带有正确解释的答案。 Linux有一个称为pipefs的VFS,它安装在内核中(而不是在用户空间中) pipefs有一个超级块,并安装在它自己的根目录(pipe:)旁边/ 与大多数文件系统不同,无法直接查看pipefs pipefs的条目是通过pipe(2)syscall进行的 pipe(2)外壳程序使用的syscall与|操作员进行管道传输(或从任何其他进程手动进行管道传输)在pipefs中创建一个新文件,其行为与普通文件非常相似 管道运算符左侧的文件已stdout重定向到pipefs中创建的临时文件 管道运算符右侧的文件已stdin设置为pipefs上的文件 pipefs存储在内存中,并且通过一些内核魔术,不应进行分页 这种关于管道(例如ls -la | less)功能如何的解释是否正确? 我不明白的一件事是,诸如bash之类的东西将如何设置进程stdin或stdout由返回的文件描述符pipe(2)。我还没有找到任何关于此的信息。