我有3个不同的进程,使用printf
打印出单个字符。但我在终端看不到它们。当我添加换行符printf("\n H")
以便每个字符都在新行上时,我可以看到它们。如果没有换行符,为什么它不起作用?
答案 0 :(得分:5)
这是一个冲动的问题。如果在每个printf
之后刷新缓冲区,则应该使输出更接近您想要的输出。要刷新标准输出,只需执行fflush( stdout )
。
答案 1 :(得分:3)
C标准为输出流定义了3种缓冲类型:
可以通过setvbuf(3)
和setbuf(3)
函数更改输出流的缓冲类型。
C标准要求stderr
在启动时不能完全缓冲(在许多实现中通常没有缓冲,以便尽快看到错误);并且stdout
只有在可以确定不引用终端时才被完全缓冲(当它引用终端时,许多实现将其初始化为行缓冲,这就是你所看到的)。
答案 2 :(得分:-1)
使用'写(1,& c,1)'系统调用,或
fprintf(stderr,'%c', c);