【发布时间】:2013-10-13 00:35:04
【问题描述】:
LKM 可以在/proc/sys 内动态创建条目,但sysctl(不是Linux 命令,而是C 的sysctl)接受一个整数数组作为第一个参数,其中预定义的值表示/proc/sys 内的条目。我的问题是:我可以使用sysctl 读取动态创建的条目还是需要使用fopen、read 等...?
【问题讨论】:
LKM 可以在/proc/sys 内动态创建条目,但sysctl(不是Linux 命令,而是C 的sysctl)接受一个整数数组作为第一个参数,其中预定义的值表示/proc/sys 内的条目。我的问题是:我可以使用sysctl 读取动态创建的条目还是需要使用fopen、read 等...?
【问题讨论】:
您需要使用文件系统接口:fopen、fread 等(或open、read,如果您愿意)。
关于名为sysctl的C函数,don't use it:
长期以来一直不鼓励使用此系统调用,而且它非常不受欢迎,它很可能在未来的内核版本中消失。从 Linux 2.6.24 开始,使用此系统调用会导致内核日志中出现警告。立即将其从您的程序中删除;请改用
/proc/sys接口。
【讨论】:
/proc 中的大部分伪文件都是不可查找的,应该按顺序读取。