如何从内核空间读取/写入linux / proc文件?

时间:2010-12-09 15:54:50

标签: linux kernel procfs

我正在编写一个由用户程序和内核模块组成的程序。内核模块需要收集数据然后“发送”到用户程序。这必须通过/ proc文件完成。现在,我创建了文件,一切都很好,并花了很长时间阅读互联网的答案,但仍然找不到。如何从内核空间读取/写入/ proc文件?提供给procfile的write_proc和read_proc用于从USER空间读取和写入数据,而我需要模块能够自己编写/ proc文件。

2 个答案:

答案 0 :(得分:9)

这不是它的工作原理。当用户空间程序打开文件时,它们是根据具体情况动态生成的。其中大多数是只读的,并由一个共同的机制生成:

  • 使用create_proc_read_entry
  • 注册条目
  • 提供一个回调函数(按惯例称为read_proc),在读取文件时调用该函数
  • 此回调函数应填充提供的缓冲区,并(通常)调用proc_calc_metrics以更新提供给用户空间的文件指针等。

您(来自内核)不会“写”到procfs文件,您会在用户空间请求时动态提供结果。

答案 1 :(得分:0)

将数据传递到用户空间的方法之一是seq_files。为了配置(写入)内核参数,您可能需要考虑sys-fs节点。

谢谢, 维杰