我的一个有同样问题的朋友在stackoverflow上被骗了:
我复制了本教程中的代码:http://www.thegeekstuff.com/2012/04/create-proc-files/
并创建了创建我的procfile的模块。
我很高兴地发现我获得了一个可以回显"text“> proc/name_of_procfile的procfile
我也可以用猫来阅读!!
我一直在愚弄它,现在我的procfile中有相当大数量的值-无论何时我都会按顺序遍历这些值:
问题1.我想知道-如何从procfile中删除值?
另外,稍后,我将尝试获得这样的行为:每当一个文件读取我的procfile时,它就会更改它在proc_file中读取的任何内容的值。
Q2。我知道这将在我的"int read_info“方法中实现,但是有什么建议要怎么做吗?
发布于 2012-09-30 02:49:39
Q1,
您不能在文件系统上正常的删除操作意义上删除这些值。如果它是可写的,你可以把一些东西echo到procfile中。然后,它取决于模块的行为如何处理这些“传入”数据。它将被存储或丢弃,或者以某种方式在内部进行计算-由模块决定。更准确地说,您放入模块中的逻辑定义了处理。本例中的模块具有非常简单的逻辑:当内核调用其write_info函数时,它在其内部缓冲区中存储一个字符串-实际上,它确实将新数据与当前内容连接在一起。然后,当内核调用其read_info函数时,它可以返回此缓冲区的内容。所以,如果你这样做了:
echo "some text">/proc/yourprocfile
echo "another text">/proc/yourprocfile然后cat /proc/yourprocfile将打印
some text
another text在屏幕上。总而言之:这些文件的完整行为是module-defined。
Q2,
您几乎可以像在通常的C程序中那样执行此操作。这里有两个主要的区别:
C库中的类似函数具有相同或非常相似的名称和功能。其他函数具有不同的名称,但仍然类似于一些用户空间函数。然后,一些仅在内核space.on the sheet of paper,因为模块中的任何错误至少可能导致内核核心转储(内核只是停止,然后您必须按reset按钮重新启动系统),并可能在最坏的情况下导致文件系统的数据损坏。因此,我建议您设置VirtualBox包;使用这个漂亮的工具创建一个虚拟机;在那里安装最低版本的linux,并在安装后创建其虚拟磁盘的快照。因此,如果出现问题,你总是可以恢复任何伤害。你不需要在那里安装所有的构建工具和内核源代码-你只需要在这个虚拟机上加载和测试/调试你的模块/应用程序。
但不管怎样,你将要触摸的区域,或者更准确地说,已经触摸的区域,是非常有趣的。
祝好运
https://stackoverflow.com/questions/12655651
复制相似问题