Linux内核态与用户态通信的常用方法
- procfs(/proc)
- sysctl(/proc/sys)
- sysfs(/sys)
- netlink 套接口
- ioctl(系统调用)
- 共享内存
procfs(/proc)
procfs
是 进程文件系统 的缩写,它本质上是一个伪文件系统,为什么说是 伪 文件系统呢?因为它不占用外部存储空间,只是占用少量的内存,通常是挂载在 /proc
目录下。
我们在该目录下看到的一个文件,实际上是一个内核变量。内核就是通过这个目录,以文件的形式展现自己的内部信息,相当于 /proc
目录为用户态和内核态之间的交互搭建了一个桥梁,用户态读写 /proc
下的文件,就是读写内核相关的配置参数。
比如常见的 /proc/cpuinfo
、/proc/meminfo
和 /proc/net
就分别提供了 CPU、内存、网络的相关参数。除此之外,还有很多的参数,如下所示:
root@ubuntu:~# ls /proc/
1 1143 1345 1447 2 2292 29 331 393 44 63 70 76 acpi diskstats irq locks sched_debug sysvipc zoneinfo
10 1145 1357 148 2