【发布时间】:2011-11-22 04:01:21
【问题描述】:
如何在 C 中将系统调用中的值输出到 Linux 控制台,以便在 dmesg 之后可见?我用什么方法打印?
【问题讨论】:
标签: c linux linux-kernel system-calls
如何在 C 中将系统调用中的值输出到 Linux 控制台,以便在 dmesg 之后可见?我用什么方法打印?
【问题讨论】:
标签: c linux linux-kernel system-calls
您正在寻找printk() 函数;在Documentation/printk-formats.txt 中可以找到有关它支持的类型的一些文档。它在kernel/printk.c中定义。
【讨论】:
我假设你的意思是在用户空间。您可以将字符串写入/dev/kmsg。在 shell 中,只需 echo 即可。在 C 中,这也很容易。
[root@cr0 ~]# echo hello > /dev/kmsg
[root@cr0 ~]# dmesg | tail -1
[24156.408735] hello
但是如果你的意思是在内核空间,当然你需要调用printk()。
【讨论】:
此外,您可能会对openlog & syslog 函数感兴趣(即使这不能完全回答您的问题)。在应用程序中,它们是获取系统日志的正确方法。
【讨论】: