我在程序开头运行的某些代码中添加了一些printf语句,但是在我的终端中使用ctrl c
终止程序之前,语句不会打印到stdout,并且显示在我的终端提示符的同一行。例如,下面演示代码中的printf会显示如下
[notice] Interrupt: exiting.
yabbadabbadoo/usr/local/bin 13:24:21 :
为什么这样以及如何改变它?即,应用程序代码中是否有某个地方开发人员以某种方式设置printf语句在退出时打印?
some_function_name(){
printf("yabbadabbadoo");
}
答案 0 :(得分:1)
应用程序代码中是否会有某个地方开发人员以某种方式设置printf语句在退出时打印?
不,通常,标准输出stdout
为line buffered。因此,除非缓冲区已满或收到换行符,否则内容不会刷新。
当程序终止时,所有打开的缓冲区都会自动刷新,这就是为什么在终止程序后看到输出的原因。
在您的情况下,您需要强制刷新缓冲区以使输出显示在终端上。你可以
'\n'
。printf()
致电fflush(stdout)
确保冲洗。