Linux 哲学
Linux 大量借鉴了 UNIX 操作系统,因为它是为 UNIX 的免费开源版本而编写的。文件存储在分层文件系统中,系统的顶层节点是根节点或简单的“/”。只要有可能,Linux 就会通过文件或看起来像文件的对象来提供其组件。进程、设备和网络套接字都由类文件对象,并且通常可以使用与常规文件相同的实用程序进行处理。
我需要知道线路的详细信息“只要有可能,Linux 就会通过文件或看起来像文件的对象来提供其组件“ 是什么 ”类文件对象”并举一个适当的例子。
答案1
它们在段落中进行了说明。进程、设备和网络套接字(和别的)。这些是由内核管理的对象,但在文件系统中显示为项目,您可以通过特定路径访问它们。它们的行为在许多方面也类似于常规文件。例如,您可以像处理常规文件一样读取和写入设备文件(见下文)。
流程:每个进程都有其文件夹/proc/$PPID/
,其中$PPID
是进程ID。/proc/$PPID/cmdline
例如,您可以在 中找到该进程的命令行。
设备:设备显示为设备文件。例如,如果您的硬盘连接到 SCSI 控制器,您可能会在/dev/sda
第一个分区中找到它/dev/sda1
。因此,如果您从中读取,/dev/sda
实际上是在读取磁盘上的原始数据。这在制作图像时很有用。
网络插座:
bash
用于/dev/tcp/$host/$port
识别 TCP 端口以及 UDP 的类似端口。一般来说,可以在以下位置找到有关套接字的信息:/proc/net/{tcp,udp}
其他的:标准输入也是一个文件,您可以在 中找到它/dev/stdin
,与标准输出类似。您可以从文件中读取/dev/zero
以获取零,并从文件中读取/dev/random
以获取真正高质量的随机数(尽管非常慢)。管道在 shell 中经常使用,您也可以创建一个命名管道。还有更多。
上面的答案基于 Ubuntu LTS 16.04,其他 Linux/Unix 版本可能有不同的索引这些对象的方式。