当前位置:  技术问答>linux和unix

printf和printk的诡异现象,有强人进来解释下的吗?

    来源: 互联网  发布时间:2016-05-02

    本文导语:  举个例子 printf("aaa"); sendto(......). 我们知道sendto是API,然后会转到内核中处理,我在内核里面处理的地方加 printk("bbb"); 我们认为打印顺序是 aaa bbb 实际上很惊人,我这边是 bbb aaa | 那你可以...

举个例子
printf("aaa");
sendto(......).

我们知道sendto是API,然后会转到内核中处理,我在内核里面处理的地方加
printk("bbb");

我们认为打印顺序是
aaa
bbb

实际上很惊人,我这边是
bbb
aaa

|
那你可以在printf()之前加入如下一条语句看看:
setvbuf(stdout, (char *)NULL, _IONBF, 0); //设置为立即显示,不缓存

另外可以在printf()之后加入如下一条语句:
fflush(stdout); // 显示将内容刷新到标准输出!

try it!
good luck!

|
个人认为
printf()函数是调用write()系统调用函数向标准输出设备写数据。
因此,printf也算是系统调用吧。所以应该是printk先打印出来。

|
而printk()函数是直接使用了向终端写函数tty_write()。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.io类console的类成员方法: printf定义及介绍
  • 为什么会我调试程序的时候出现“printf.c: 没有那个文件或目录. in printf.c“
  • java命名空间java.io类printstream的类成员方法: printf定义及介绍
  • UDP包何printf?
  • java命名空间java.io类printwriter的类成员方法: printf定义及介绍
  • Linux 中的printf、open、close
  • Python中类似printf的字符串格式化详解
  • [求解]关于printf 与 ++ --的疑惑
  • printf的静态库在哪??
  • Eclipse对printf()不能输出到控制台的快速解决方法
  • printf显示的问题.
  • linux printf文字编码设定?
  • 如何使用ar命令检查在标准的C库中收藏了多少与printf相关的函数
  • 如何在printf()中指定字段的宽度后,左端的用数字0而不用空格补全
  • 送分题,关于printf输出格式的问题。
  • 问个printf的问题
  • UART_printf在哪里?
  • printf到指定终端
  • ld 报undefined reference to `printf'求解决方法
  • printf的问题 为什么没有输出
  • 帮我分析一下这个printf语句


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3