当我刚刚在 bash 中使用管道时,我没有考虑更多。但是当我阅读一些使用系统调用 pipe() 和 fork() 的 C 代码示例时,我想知道如何理解管道,包括匿名管道和命名管道。
经常听到“Linux/Unix 中的一切都是文件”。我想知道管道是否实际上是一个文件,以便它连接的一部分写入管道文件,另一部分从管道文件读取?如果是,创建的匿名管道的管道文件在哪里?在 /tmp、/dev 或 ...?
但是,从命名管道的例子中,我也了解到使用管道比显式使用临时文件具有空间和时间性能优势,可能是因为管道的实现不涉及文件。此外,管道似乎不像文件那样存储数据。所以我怀疑管道实际上是一个文件。
我想知道文件描述符和文件名之间有什么区别和关系。他们都是用来访问文件的吗?如果是,以同样的方式?
例如,/dev/fd/0、/dev/stdin和/proc/self/fd/0都是指向 的链接/dev/pts/2。这四个是文件描述符,还是文件名?