学习视频链接
黑马程序员-Linux系统编程_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1KE411q7ee?p=55&spm_id_from=pageDriver
目录
一、阻塞、非阻塞概念
1、读常规文件是不会阻塞的,不管读多少字节,read 一定会在有限的时间内返回。从终端设备或网络读则不一定, 如果从终端输入的数据没有换行符,调用 read 读终端设备就会阻塞,如果网络上没有接收到数据包,调用 read 从网络读就会阻塞,至于会阻塞多长时间也是不确定的,如果一直没有数据到达就一直阻塞在那里。同样,写常规文件是不会阻塞的,而向终端设备或网络写则不一定。
2、阻塞、非阻塞是设备文件、网络文件的属性
二、测试阻塞和非阻塞
2.1 研究设备的阻塞和非阻塞
设备目录 /dev,显示设备和输入设备统称为终端,对应的文件叫 /dev/tty,称为终端文件
设备文件默认是阻塞的
2.2 第一段代码测试阻塞
输入一段数据,如果不按回车就一直阻塞在这里
2.3 第二段代码测试非阻塞
隔着2秒去读一次,没读到就等两秒,然后跳转到前面再次执行语句,直到读到数据为止
2.4 第二段代码的基础上增加超时解决非阻塞
三、总结