在Linux下,大多数资源都是以文件的方式访问的。Linux系统上的文件类型有:
- 普通文件。
就是储存到磁盘上大家所操作的各种数据文件; - 管道文件。
是一个从一端发送数据,从另一端接收数据的通道; - 目录
也叫目录文件,是包含了保存在目录中文件的列表; - 设备文件
是一种特殊文件,提供了大多数物理设备的接口; - 符号链接
包含了到另一个人文件的连接,类似于windows的快捷方式; - 套接口
套接口更像管道文件,但可以让处于不同机器上的进程通讯。
比如进入Linux系统,cd不带参数回到宿主目录,然后:
cd /proc
ls
列举出很多文件:
打开其中几个看看,比如:cat cpuinfo
可以看出来,cpu的详细信息都列举在这个文件中,以后如果我们要编程获取cpu信息,那就是读取这个文件;
再比如 cat meminfo,读取这个文件可以看到内存详细的信息:
以后如果编程中要使用到内存的信息,也是读取这个文件就可以了。
其他的设备也类似。
更进一步,我们在Linux上运行的程序,其实也是由一个文件维护。我们看一个例子,这个程序的功能很简单,就是让程序一直运行着:
#include <unistd.h>
int main()
{
while(1)
{
sleep(1);
return 0;
}
}
编译执行起来,然后执行命令:ps -u 系统用户名,找到刚刚执行起来程序的PID:
然后回到/proc目录下,ls列举出这个文件夹下的所有的文件,刚好可以找到有一个4032名称的文件夹:
对了,这个文件夹就是维护着刚才打开的、正在运行的test程序,Linux系统给这个程序分配的各种资源:
比如查看test程序的状态:
可以看出来,在Linux中,一个进程都是用一个文件来描述的,可见文件在Linux中的重要性。