printf语句直到中断才打印

时间:2017-03-07 18:28:29

标签: c printf

我在程序开头运行的某些代码中添加了一些printf语句,但是在我的终端中使用ctrl c终止程序之前,语句不会打印到stdout,并且显示在我的终端提示符的同一行。例如,下面演示代码中的printf会显示如下

[notice] Interrupt: exiting.
yabbadabbadoo/usr/local/bin 13:24:21 : 

为什么这样以及如何改变它?即,应用程序代码中是否有某个地方开发人员以某种方式设置printf语句在退出时打印?

some_function_name(){
  printf("yabbadabbadoo");

}

1 个答案:

答案 0 :(得分:1)

  

应用程序代码中是否会有某个地方开发人员以某种方式设置printf语句在退出时打印?

不,通常,标准输出stdoutline buffered。因此,除非缓冲区已满或收到换行符,否则内容不会刷新

当程序终止时,所有打开的缓冲区都会自动刷新,这就是为什么在终止程序后看到输出的原因。

在您的情况下,您需要强制刷新缓冲区以使输出显示在终端上。你可以

  • 在格式字符串末尾添加换行符 '\n'
  • printf()致电
  • 后使用fflush(stdout)

确保冲洗。