Linux一切皆文件

Linux一切皆文件,第1张

Linux中所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件是文件,目录是文件,硬件设备是文件,套接字、网络通信等资源也都是文件。

Linux系统中,文件具体可以分为以下几种类型:

1、普通文件

类似mp4、pdf、html这样,可直接拿来使用的文件都属于普通文件,Linux用户根据访问权限的不同可以对这些文件进行查看、删除以及更改 *** 作。

2、目录文件

Linux系统中,目录文件包含了此目录中各个文件的文件名以及指向这些文件的指针,打开目录等同于打开目录文件,只要你有权限,可以随意访问目录中的任何文件。

注意,目录文件的访问权限,同普通文件的执行权限,是一个意思。

3、字符设备文件和块设备文件

这些文件隐藏在/dev/目录下,当进行设备读取或外设交互时才会被使用。

例如,磁盘光驱属于块设备文件,串口设备则属于字符设备文件。

Linux系统中的所有设备,要么是块设备文件,要么是字符设备文件。

4、套接字文件

套接字文件一般隐藏在/var/run/目录下,用于进程间的网络通信。

5、符号链接文件

类似于Windows中的快捷方式,是指向另一文件的简介指针。

6、管道文件

主要用于进程间通信。例如,使用mkfifo命令创建一个FIFO文件,与此同时,启用进程A从FIFO文件读数据,启用进程B从FIFO文件中写数据,随写随读。

如果从事linux编程的话,就能很好理解这句话,对所有文件(目录、字符设备、块设备、 套接字、打印机等) *** 作,读写都可用fopen()/fclose()/fwrite()/fread()等函数进行处理。屏蔽了硬件的区别,所有设备都抽象成文件,提供统一的接口给用户。这就是“一切皆是文件”的思想。

就比如显示器,Linux将它看成一个文件(线性),用其他软件修改这个文件,结果就是显示器上的内容发生变化;

每个软件都有确定的用途倒是有点基本了:一个用途不确定的软件该怎么用?

现在,我打开了一个网页浏览器,登上百度知道,光标定位到文本输入框,好了,计算机开始监视计算机输入设备(键盘)的变化,我按下某些按键,表现为“键盘”这个设备文件发生改变,Linux将监视到的这一变化与原先的键盘文件对比,生成差异文件(该文件不保存到硬盘),反馈到输入法程序,输入法程序对这个文件进行编码转换,结果保存到内存,并修改显示器文件(实际上只是写入到一个缓冲区,再由专门的程序按一定规则写入到显示器文件,下面的描述同样会跳过这类过程),表现为屏幕显示内容发生改变。当我点击“提交回答”按钮后,网页开始根据前面的修改,生成需要上传的数据包,并写入到一个内存缓冲区,其他程序会对这个缓冲区进行编码,并将其内容添加到网卡相关的缓冲区,等待写入到发送数据的端口,表现为数据被发送至互联网。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/9020537.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-24
下一篇 2023-04-24

发表评论

登录后才能评论

评论列表(0条)

保存