linux系统编程学习笔记(3)阻塞与非阻塞

linux系统默认的三个文件描述符:

#define STDIN_FILENO 0  读终端,即标准输入

#define STDOUT_FILENO 1  写终端,即标准输出

#define STDERR_FILENO 2   错误,即标准错误信息

linux中终端也是以文件形式,存放在/dev/tty  即为当前终端,默认打开。

linux系统编程学习笔记(3)阻塞与非阻塞

上面代码即为一个对当前终端读写的例子。

linux系统编程学习笔记(3)阻塞与非阻塞

运行结果如图。后面多出来的d原因如下:

linux系统编程学习笔记(3)阻塞与非阻塞

在这个读过程发生了阻塞,如果没有输入,程序会一直等候。

阻塞并非函数的属性,而是文件的属性,终端默认的属性为阻塞,还有管道和套接字。设置O_NONBLOCK为非阻塞属性设置。