#include <stdio.h>
#include <unistd.h>
int main (){
while(1){
fprintf (stdout,"hello-out");
fprintf (stderr,"hello-err");
sleep (1);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
好吧,我认为这只是打印,你好 - 然后你好 - 错误地休息一下并再次打印那些文字,但不,奇怪的事情正在发生,它只是打印hello-err然后需要一秒休息并做同样的事情再次.为什么?
但是等等,然后我决定在不同的行上打印它们,现在它起作用了.
fprintf (stdout,"hello-out\n");
fprintf (stderr,"hello-err\n");
Run Code Online (Sandbox Code Playgroud)
- - - - - 与...一样 - - - - - -
fprintf (stdout,"hello-out\n");
fprintf (stderr,"hello-err");
Run Code Online (Sandbox Code Playgroud)
那么'\n'在这里的重要性是什么?这与潮红有关吗?因为我读到'\n'用于冲洗.
并且还在stdout上打印文字,不会产生任何输出:(
fprintf (stdout,"hello-out");
fprintf (stdout,"hello-err");
Run Code Online (Sandbox Code Playgroud)
为什么?
Fat*_*ror 11
默认情况下,stdout是行缓冲.这意味着除非您明确刷新它,否则无法保证何时将写入写入目标,直到它看到\n.
stderr另一方面,默认情况下是无缓冲的.每次写入都会立即写入.