产生阻塞的场景:
读设备(dev)文件、读网络文件
tty就是显示终端设备,/dev/tty
阻塞和非阻塞_标准输出
这是会读到键盘的值并写道标准输出
阻塞和非阻塞_非阻塞_02
第一个hello是自己输入的,是一直在等着,所以是阻塞
非阻塞的代码如下图所示:
阻塞和非阻塞_非阻塞_03
此时read返回-1的时候,errno会变成EAGAIN或EWOULDBLOCK,表示非阻塞状态且当前无数据;阻塞情况就是读取错误,所以两个-1的含义是不一样的
但是这样有一个问题:他一直在等,所以可以设置一个超时时间。
阻塞和非阻塞_标准输出_04
阻塞和非阻塞_标准输出_05
设备有数据的时候通知用户才是读数据的最优方法:select poll epoll

主要是给自己看的,所以肯定会出现很多错误哈哈哈哈哈