如何从 Linux 内核调用标准库?
我正在调整 Linux 内核 /net
目录中的代码。
我正在尝试诸如打印之类的操作,但我发现没有相关的标头(例如 stdlib.h
、stdio.h
等)。那么我怎样才能在内核级别做到这一点呢?
I am tweaking code residing in the /net
directory of linux kernel.
I was trying things like printing but I see that there are no relevant headers (like stdlib.h
, stdio.h
etc). So how can I do this at the kernel level?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不能在内核中使用任何用户空间库函数,您应该仅使用内核导出的函数。所以,不会有stdio.h,stdlib.h等。如果你想在内核中打印一些东西,你有printk()< /code> 函数,相当于用户空间中的
printf()
。另请参阅我的博客文章 Linux 模块编程第 1 部分 和 第 2 部分。
You cannot use any user space library functions in kernel, You should use only functions exported by the kernel. So, there will not be
stdio.h
,stdlib.h
, etc. If you want to print something in the kernel, you have theprintk()
function, this is equivalent toprintf()
in user space.See also my blog posts Linux Module Programming Part1 and Part2.
内核模块无权访问 C 标准库。内核中有一些可用的函数;查看内核中的
lib
目录源代码或您最喜欢的 Linux 内核编程书籍(如果您没有,Linux Device Drivers 是一个很好的,而且可以在线获得)。对于 printf 调试,有printk
,它向内核日志发出消息。Kernel modules do not have access to the C standard library. There are a few functions available in the kernel; look in the
lib
directory in the kernel source or in your favorite Linux kernel programming book (if you don't have one, Linux Device Drivers is a good one, and it's available online). For printf debugging, there'sprintk
, which emits messages to the kernel logs.