零 引入

非阻塞IO ---阻塞IO 是不是死心眼? …

Info

阻塞IO 信号章节,手册内容 man 2 read , errors:当前会出错的情况
假错的现象:

  1. EINTR 阻塞的系统调用;
  2. EAGAIN 非阻塞方式 读打印机 现在没有数据 尝试 没有成功 #linux man 7 最全的内容,解释。讲机制。 tcp socket

有限状态机编程 应用层


一 非阻塞IO

  • 简单流程:一个程序的自然流程1是结构化的
  • 复杂流程:自然流程不是结构化的。 常见于网络协议。跟人打交道这件事,本身不容易。 某个情况出错了,怎么样。 口令随机校验:连续两次输入正确才能登录。

有限状态机 用来解决复杂流程问题

二 IO多路转接

文件描述符行为的监视

  • select(); 古老 。可移植
  • poll(); 可移植
  • epoll();linux做的方言。poll封装 epoll() 不可移植

三 其他读写函数

  • readv();
  • writev();

unix环境高级编程:

  • readn();
  • writen(); 作者写的两个函数。读够n个字节,写够n个字节。

四 存储映射IO

  • mmap();
  • munmap();

五 文件锁

  • fcntl();
  • lockf();
  • flock();

Footnotes

  1. 作为人类 解决问题的最直接直观的思路 。大象放进冰箱 分为三步:1. 打开冰箱 2. 把大象放进冰箱 3. 关闭冰箱