有一段时间没来,请教关于 printf 的打印输出

QNX在什么情况下,会遇到 printf( ) 没有输出的情况?如何解决呢?

譬如说,怀疑程序卡在一系列运算之中,于是在前面加入一个简单的打印语句:

printf( "before\n" );

结果执行的时候却没有看到。

排除程序卡在打印语句之前的情况的话,还会有什么原因造成没有打印输出呢?

谢谢。 :slight_smile:

建立 c++ 程序,使用语句如下

cout<<std::endl;

句末的 endl 会强制把缓存中的数据全部“挤出来”

标准输出被关闭了,或被重定位到别的设备上了。

谢谢答复。
重定位到别的设备能理解,因为还有保存到硬盘的语句。
至于“标准输出被关闭”,是指什么情况下呢?

比如说 “close(1);” 就把标准输出给关了。

当然没事一般自己不会去做这样的close()。不过,传统地把自己变成daemon的函数(fork() + setgrp() + close())都会自动关0, 1, 2;还有可能是 spawn()的时候没有继承 0, 1,2 …

感谢答复。