我正在研究LKM,该LKM需要检索并将某些信息写入文件中。我查找了执行此操作的常用方法,但是找不到适用于Linux 4.x的方法。我还发现,可以从内存中检索系统调用并有效地调用它们。
如我目前所发现的,没有更好的方法了,我想知道是否可以找到系统调用表,然后调用 open ,读/写和关闭。
答案 0 :(得分:3)
在大多数情况下,强烈建议不要这样做。
https://www.linuxjournal.com/article/8110对我来说真的是一本好书,我以为我也必须这样做。
但是,从Linux内核内部,禁止从文件中读取数据以获取配置信息。这是由于开发人员尝试执行此操作可能会导致各种各样的问题。
实际上,可以从内核内部使用系统调用来完成此操作,但是通常也不建议从内核内部调用系统调用。它们被设计为供用户空间应用程序查询内核的接口,而不是让内核自行工作的接口。
您要在内核中处理哪种文件?如果您要操作的文件类型是proc文件系统,sysfs文件系统或dev文件系统提供的,则可以在内核中修改文件的内容(因为内核将这些内容提供给用户空间本身)-不应使用文件操作调用来完成此操作。如果它是普通的用户空间文件,那么几乎永远不会希望内核能够对其进行修改。
如果您提供更多细节,我很想听听他们,但这通常是个坏主意。