C - 未定义对"printk"的引用



我想在我的用户空间代码中使用printk函数,但我不想编写内核模块。有可能这样做吗?

我尝试使用linux/kernel.h标题和linux/module.h但它不起作用

printk("<1>some text");

简单的答案是否定的,您不能以任何方式在用户空间代码中使用 printk。printk 是为内核程序员设计的。如果你的意图是写入 syslog -> dmesg,那么使用 syslog(( ;它派上用场了!!

系统日志手册页

试试这个:

#include <stdio.h>
#include <unistd.h>
#include <syslog.h>
int main(void) {
 openlog("slog", LOG_PID|LOG_CONS, LOG_USER);
 syslog(LOG_EMERG, "Hello from my code ");
 closelog();
 return 0;
}

要为文件重定向配置系统日志,请执行以下操作:

http://www.softpanorama.org/Logs/syslog.shtml

http://linux.die.net/man/5/syslog.conf

在用户空间中使用内核标头会使行为或程序不可预测。原因之一是内核所在的内存无法直接从用户空间访问。

在这里,您可以找到有关这些案例的一些信息:

  • lwn.net/Articles/113349/
  • kernelnewbies.org/KernelHeaders

相关内容

  • 没有找到相关文章

最新更新