linux中用户和内核空间的交互接口汇总


 内核提供接口给用户空间程序,便于用户进行进行信息的读取和配置。

procfs和sysctl都可以导出内部信息,其中procfs主要用于导出只读信息,sysctl导出可写的。此外还有sysfs,ioctl

1.   procfs

procfs是内核提供的,一种在用户空间中对各种子系统的设置进行配置的方式,通常挂载在/proc下。

 网络代码注册的文件位于/proc/net目录中

2.   sysctl系统调用

sysctl接口允许用户读取或者修改内核参数。可以通过sysctl命令导出变量,如果内核支持procfs,会在/proc下创建sys文件,sysctl命令也是通过/proc/sys目录下的文件与内核通信的。现在发行版本一般都支持,如果没支持的那肯定是古董版本。

       例如进制转发IP数据包,可以设置如下:

echo 1 > /proc/sys/net/ipv4/ip_forward

       将1写入到了文件,后续将不再支持IP转发。也可以通过程序调用系统调用sysctl来实现。

3.   sysfs

sysfs是linux2.6提供的虚拟文件系统,设计之初是用于对设备和驱动信息导出到用户空间名称叫做driverfs,后来代码更新“失控”,发现也能支持其他子系统,变成了sysfs,挂载在/sys中。

4.   ioctl系统调用

ioctl 系统调用可以操作一个文件,用于实现特殊设备的操作。也可以操作套接字描述符,例如net-tools工具包。

5.   netlink

netlink套接口是网络应用程序与内核通信的接口,IPROUTE2包中的大多数命令都使用这个接口。使用也比较简单,可以通过套接口标准的API来打开、关闭。

关于netlink可以参考《linux中通用Netlink详解及使用剖析(附源码)》

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值