请教各位,应用程序中的printf与内核的printk有什么关系?

发布于 2022-10-15 08:12:54 字数 57 浏览 22 评论 0

请教各位,应用程序中的printf函数与内核的printk函数有什么区别和联系,会不会调用内核的printk函数?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

燕归巢 2022-10-22 08:12:54

不会  只是长得像,功能一样

七七 2022-10-22 08:12:54

回复 2# amarant

    那printf函数怎么执行呢?直接调用相应的驱动?

蒗幽 2022-10-22 08:12:54

等给你讲明白这个问题, 整个kernel / user的接口都清楚了, 都能写本书了。

番薯 2022-10-22 08:12:54

回复 3# iverson_david

    printf是通过write系统调用的。可以用strace看看。

情话难免假 2022-10-22 08:12:54

printf是打印到终端的,printk打印到日志文件中!!

年华零落成诗 2022-10-22 08:12:54

回复 4# 帅绝人寰
有没有相关的资料搞来研究研究?

江湖彼岸 2022-10-22 08:12:54

回复 7# iverson_david

    建议楼主看一下 C 标准库

掀纱窥君容 2022-10-22 08:12:54

深究这个 只会让你狠蛋疼~

唠甜嗑 2022-10-22 08:12:54

回复 9# xiaopeng14

    呵呵,倒不是想深究,最近在做一个东西,嵌入式方面的,通过超级终端与Linux嵌入式设备进行通信,在内核启动时,几乎所有的与PRINTK有关的函数都没有输出相应的信息,但是登陆后,输入命令,命令的执行结果可以在windows的超级终端中输出。这两天看了一些资料。执行命令能够通过超级终端输出,是因为内核的init进程在检测到连接后,将标准输入标准输出等设置为了相应的终端。这样,在执行shell命令时,如果不指定重定向,那printf的输出都是通过超级终端输出的。但是不明白为什么我的内核在启动的时候,不会输出PRINTK函数的信息。另外,在登陆之后,如果插上USB设备,系统是会输出一些相关信息的,但我的系统也不会输出相关信息(系统的USB功能完全可用,可以访问USB设备)。所以,一直很疑惑,不知道谁能指点一二

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文