stdout(標準輸出),輸出方式是行緩衝。輸出的字符會先存放在緩衝區,等按下回車鍵時才進行實際的I/O操作。
stderr(標準錯誤),是不帶緩衝的,這使得出錯信息可以直接儘快地顯示出來。
#include<stdio.h>
int main()
{
while(1)
{
fprintf(stdout,"Group");
fprintf(stderr,"XiyouLinux");
getchar();
}
}
在Linux環境下我們可以發現第一次會輸出XiYouLinuxGroup,是因爲stdout將輸出的Group放到了緩衝區當中直到程序結束在將緩衝區中的數據刷新出來。
那麼我們再看下一個例子
#include<stdio.h>
int main()
{
while(1)
{
fprintf(stdout,"Group\n");
fprintf(stderr,"XiyouLinux");
getchar();
}
}
輸出結果爲
Group
XiYouLinux
這是什麼原因呢???這個屬於stdout輸出的第二種情況即遇到換行符(“\n”)時輸出,因此在本例中順序輸出了該結果
#include<stdio.h>
void main()
{
int i;
for(i=1;i<=100000;i++)
{
fprintf(stdout,"Group");
fprintf(stderr,"XiYouLinux\n");
}
}
在電腦上面會一直輸出末尾換行的XiYouLinux,直到stdout輸出的字母數累計到1024後將這1024個字母輸出,然後繼續將末尾換行的XiYouLinux輸出,接着等存夠102輸出,如此反覆直到程序結束,將緩衝區中的剩餘字母輸出。
stdout和stderr還有很多其他的一些有趣的操作,在這裏就不多作說明了,寫這篇博客只是希望大家瞭解一些關於這兩個的一些冷門知識。若有不對的地方還請多多指教。