如何在内核模块中使用system()因为stdlib.h不能在内核程序中使用?

在 Linux 中开发内核模块时,不允许使用 C 标准库。但是,如果我需要使用一些常用功能,例如system(),我该如何实现?

回答

答案是:你没有。在极少数情况下,您需要执行类似于 的操作system(),即从内核空间调用用户空间应用程序。在这些特殊情况下,可以使用usermode-helper API,它允许从内核空间启动(并可能等待)任意用户空间程序。

但是,必须注意的是,在设计模块时,您确实应该避免依赖于其他用户空间程序的输出/执行。在最好的情况下,这会降低系统速度,而在最坏的情况下,它还会破坏内核/用户空间隔离并引入关键漏洞。call_usermodehelper()在现代内核版本中使用该函数的现有实例几乎可以依靠您的技巧来计算。在编写内核模块时,您基本上永远不需要做这样的事情。如果你认为你这样做了,你应该先重新考虑两次。


以上是如何在内核模块中使用system()因为stdlib.h不能在内核程序中使用?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>