linux下,一切皆文件。在所有的文件描述符中,有三个是已经被固定占用了,分别是stdin(文件描述符为0)、stdout(文件描述符为1)、stderr(文件描述符为2)。stdin是标准输入,默认是从键盘输入。stdout是标准输出,stderr是标准错误,它们两个的默认输出都是终端。而函数perror就是向stderr中输出,类似fprintf(stderr,"错误信息")。
另外stderr和stdout还有一个区别就是,stdout是带有行缓冲的,所以一行的数据不会直接输出,而是遇见换行符才会输出这一行,但是stderr是没有缓冲区的,它会直接输出。