【发布时间】:2016-07-12 03:27:18
【问题描述】:
我正在尝试为我正在工作的模块读取配置文件(位于/生成在内核中的特定位置)。
我可以通过使用带有 O_RDONLY 标志(只读)的 filp_open 来读取整个文件,但我想不出一种逐行读取它的方法。
当前代码
f = filp_open("/etc/my_module",O_RDONLY, 0);
if ( f==NULL) {
printk("Error in loading config for birdge.\n");
return 1;
} else {
fs = get_fs();
set_fs(get_ds());
/* read line config here */
f->f_op->read(f, buf, 128, &f->f_pos);
set_fs(fs);
printk("buf:%s\n",buf);
}
Linux 内核版本:3.8.0-29-generic
我想要实现的是将每一(nth)行放入缓冲区数组(char *buf[128][128]),稍后我将使用纯 c 将参数和值分块。
通过这种方式,配置文件中的变量可以在模块的运行时使用,当然我会做一些条件检查配置是否正常。
谢谢
【问题讨论】:
-
不,这完全是错误的做法。
-
您应该阅读如何提问。这是一个可怕的问题。
-
要获得配置复杂事物的灵感,请查看内核如何配置网络、路由和防火墙。
-
你没有说它是哪个内核,我想@ZanLynx 假设它是 linux 的内核。您没有解释为什么它失败以及为什么不能使用
fgetc()或任何标准函数。 -
是的,这是我的假问题。实际上 fgetc() 并没有失败 iharob。我只是不能在内核空间中使用它,因为它来自 c 的 stdlib。我要问的是内核中的那个函数的等价物。是的,这是 Linux 内核,更具体地说是 3.18.xx。我正在检查 linux 如何根据 Zan 的建议配置网络。感谢伙伴的积极评价。