在Linux TTY编程时会涉及到 termios 结构,其中c_cc数组里面,有 VTIME 和 VMIN 下标。关于他们的使用经常令人迷惑,查阅了不少博客,上面的讲解也有不少误区。
在这里重新对这二者关系进行介绍。结合实验会令人记忆更深刻。
VTIME 和 VMIN 的值只能用于非标准模式,两者结合起来共同控制对输入的读取。此外,两者结合使用还能控制在一个程序试图读取与一个终端关联的文件描述符时将发生的情况。
两者结合使用分为下面4种情况:
- VMIN = 0 和 VTIME = 0 :在这种情况下,read 调用总是立刻返回。如果有等待处理的字符,read 就会立刻返回;如果没有字符等待处理,read 调用返回0,并且不读取任何字符;
- VMIN = 0 和 VTIME > 0 :在这种情况下&#x