首页编程语言c语言proc编程

c语言proc编程

cysgjjcysgjj时间2024-08-23 08:29:54分类编程语言浏览20
导读:Linux中“一切皆文件”是什么意思?Linux中“一切皆文件”是什么意思?看了下这里的回答,本质上都没有回答到点子上。这个如果你做过一些底层系统维护工作,又或者做过点linux开发,就会理解了。举两个例子,如何在linux中列举所以开启了的进程?除了系统api以外,其实你还可以ls一下/proc目录,那里每一个进程会对应一个文件夹,……...
  1. Linux中“一切皆文件”是什么意思?

linux中“一切皆文件”是什么意思

看了下这里的回答,本质上都没有回答到点子上。这个如果你做过一些底层系统维护工作,又或者做过点Linux开发,就会理解了。

举两个例子,如何在linux中列举所以开启了的进程?除了系统api以外,其实你还可以ls一下/proc目录,那里每一个进程会对应一个文件夹,文件夹的名字是pid,在每个进程的文件夹下还会有这个进程的详细信息,比如cmdline文件指的是这个进程的启动命令和参数。再比如如何得到当前系统的硬件信息?你可以直接查看/dev目录,里面会分门别类地给到你所有硬件信息。而且很多都是可以直接当做txt文件打开的。系统会把很多硬件直接模拟成文件,这样你可以在没有具体系统api调用文档的情况下,通过读写文件来完成操作硬件。比如一些简单系统显示,就可以直接读写fbcon文件来完成,以及以前打印机,扫描仪等等的操作,就可以通过写入打印机文件,以及读取扫描仪文件来完成。

除了这些以外,因为是万物文件的系统,可以通过编写简单的编写各种shell,或者说类似于windows的bat文件来完成复杂的系统api操作,因为他们只是文件。举个例子,通过命令行可以直接裸写/dev/sda的二进制内容来完成分区和格式化工作。又比如mount命令本质上也是一种转换器,把硬件文件转换成分区文件夹。你对于分区内文件的操作,最后就变成了对硬件文件的操作,最后通过驱动变成实际的硬件指令。又比如我可以通过直接读写/dev内部的文件控制笔记本背板a面的呼吸灯颜色。

c语言proc编程
图片来源网络,侵删)

本质上,万物皆文件做的事情是,把你不熟悉的系统api,驱动,变成固定路径下的文件操作。这样你随便用任何一个编程语言环境都可以驱动和控制系统表现。再比如你可以直接用nodejs,python,c,java,等等各种语言来裸写控制,而不用到处寻找各种支持库和系统包。这也是当初为什么类unix系统喜欢用管道的原因,因为都***是文件操作,想怎么玩就怎么玩

这是个很古老的话题。Linux设计之初内核层和用户层是严格分离的,用户层要访问内核就要调用两个系统调用,read和write,比如访问串口就是读写/dev/com设备,read接收数据,write发送数据,那么这个串口设备就相当于一个文件了。
后来随着硬件设备性能越来高,这种copy to user 的方式效率实在是有点捉襟见肘,就出现了内核内层直接map到用户空间的捷径,用户层可以zero copy方式访问内核数据,效率也就大大提升了。
所以现在的Linux对设备的访问并不是单纯的read write和ioctl,还有map方式,像著名的uio框架,就可以把内核内存映射到用户空间让应用程序直接读写。

c语言proc编程
(图片来源网络,侵删)

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/18126.html

文件系统可以
互联网技术指,互联网技术指什么 编程语言的框架