Linux系统下,当一个用户进程被创建时,与之对应的三个数据流(stdin,stdout和stderr,即三个文件)也会被创建。
stdin
,标准输入文件,通常对应着终端的键盘。stdout
,标准输出文件,通常对应着终端的屏幕。stderr
,标准错误输出文件,通常对应着终端的屏幕。
默认情况下,三个数据流对应的文件描述符分别是stdin—0,stdout—1,stderr—2
#include <stdio.h>
int main(){
fprintf(stdout, "hello");
fprintf(stderr, "world");
return 0;
}
程序运行结果:
worldhello
stdout
存在一个缓冲区,它的输出会先放在缓冲区里面,遇到换行或者缓冲区刷新时才会输出到屏幕上。而 stderr
不存在缓冲区,也就是说 stderr 的输出内容会直接打印在屏幕上。所以会出现上面的输出结果。