厦门网站建设工程,网络营销的背景和意义,马鞍山网站建设兼职,手机网站定制 杭州在Linux TTY编程时会涉及到 termios 结构#xff0c;其中c_cc数组里面#xff0c;有 VTIME 和 VMIN 下标。关于他们的使用经常令人迷惑#xff0c;查阅了不少博客#xff0c;上面的讲解也有不少误区。
在这里重新对这二者关系进行介绍。结合实验会令人记忆更深刻。
VTIME…在Linux TTY编程时会涉及到 termios 结构其中c_cc数组里面有 VTIME 和 VMIN 下标。关于他们的使用经常令人迷惑查阅了不少博客上面的讲解也有不少误区。
在这里重新对这二者关系进行介绍。结合实验会令人记忆更深刻。
VTIME 和 VMIN 的值只能用于非标准模式两者结合起来共同控制对输入的读取。此外两者结合使用还能控制在一个程序试图读取与一个终端关联的文件描述符时将发生的情况。
两者结合使用分为下面4种情况 VMIN 0 和 VTIME 0 在这种情况下read 调用总是立刻返回。如果有等待处理的字符read 就会立刻返回如果没有字符等待处理read 调用返回0并且不读取任何字符VMIN 0 和 VTIME 0 在这种情况下只要有字符可以处理或者是经过 VTIME 个十分之一秒的时间间隔read 调用就返回。如果因为超时而未读到任何字符read 返回0否则 read 返回读取的字符数目。VMIN 0 和 VTIME 0 在这种情况下read 调用将一直等待直到有 MIN 个字符可以读取时才返回返回值是读取的字符数量。到达文件尾时返回0。VMIN 0 和 VTIME 0 在这种情况下当 read 被调用时它会等待接收一个字符。在接收到第一个字符及后续的每个字符后一个字符间隔定时器被启动如果定时器已经运行则重启它。当有 MIN 个字符可读或两个字符之间的时间间隔超过 TIME 个十分之一秒时read 调用返回。这个功能可用于区分是单独按下了 Escape 键还是按下一个 Escape 键开始的功能组合键。但要注意的是网络通信或处理器的高负载将使得类似这样的定时器失去作用。 通过设置非标准模式与使用的 VMIN 和 VTIME 值程序可以逐个字符地处理输入。