linux系统默认的三个文件描述符:
#define STDIN_FILENO 0 读终端,即标准输入
#define STDOUT_FILENO 1 写终端,即标准输出
#define STDERR_FILENO 2 错误,即标准错误信息
linux中终端也是以文件形式,存放在/dev/tty 即为当前终端,默认打开。
上面代码即为一个对当前终端读写的例子。
运行结果如图。后面多出来的d原因如下:
在这个读过程发生了阻塞,如果没有输入,程序会一直等候。
阻塞并非函数的属性,而是文件的属性,终端默认的属性为阻塞,还有管道和套接字。设置O_NONBLOCK为非阻塞属性设置。