请教各位,应用程序中的printf与内核的printk有什么关系?
请教各位,应用程序中的printf函数与内核的printk函数有什么区别和联系,会不会调用内核的printk函数?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
请教各位,应用程序中的printf函数与内核的printk函数有什么区别和联系,会不会调用内核的printk函数?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
不会 只是长得像,功能一样
回复 2# amarant
那printf函数怎么执行呢?直接调用相应的驱动?
等给你讲明白这个问题, 整个kernel / user的接口都清楚了, 都能写本书了。
回复 3# iverson_david
printf是通过write系统调用的。可以用strace看看。
printf是打印到终端的,printk打印到日志文件中!!
回复 4# 帅绝人寰
有没有相关的资料搞来研究研究?
回复 7# iverson_david
建议楼主看一下 C 标准库
深究这个 只会让你狠蛋疼~
回复 9# xiaopeng14
呵呵,倒不是想深究,最近在做一个东西,嵌入式方面的,通过超级终端与Linux嵌入式设备进行通信,在内核启动时,几乎所有的与PRINTK有关的函数都没有输出相应的信息,但是登陆后,输入命令,命令的执行结果可以在windows的超级终端中输出。这两天看了一些资料。执行命令能够通过超级终端输出,是因为内核的init进程在检测到连接后,将标准输入标准输出等设置为了相应的终端。这样,在执行shell命令时,如果不指定重定向,那printf的输出都是通过超级终端输出的。但是不明白为什么我的内核在启动的时候,不会输出PRINTK函数的信息。另外,在登陆之后,如果插上USB设备,系统是会输出一些相关信息的,但我的系统也不会输出相关信息(系统的USB功能完全可用,可以访问USB设备)。所以,一直很疑惑,不知道谁能指点一二