用户使用键盘循环输入字符,select监听终端,将用户输入的字符输出到终端上
来源:互联网 发布:功夫熊猫 知乎 编辑:程序博客网 时间:2024/04/29 01:49
/* *用户使用键盘循环输入字符,select监听终端,将用户输入的字符输出到终端上 *如果用户指定时间内没有做输入,提示超时,用户输入‘q’退出。 */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <fcntl.h>#include <sys/select.h>int main(void){fd_set rfds, inset;struct timeval tv;int retval, n, max_fd;char ch;max_fd = open("/dev/tty", O_RDONLY);if(max_fd < 0){perror("open /dev/tty error");exit(1);}FD_ZERO(&rfds);FD_SET(max_fd, &rfds);while(1){tv.tv_sec = 3;//每个字符都设置一次超时上限tv.tv_usec = 600;//所以这个应该至于循环中inset = rfds;//***保证监听的文件描述符始终在集合中retval = select(max_fd+1, &inset, NULL, NULL, &tv);if(retval == -1){perror("select error");exit(1);}else if(retval){//retval>0说明监听的集合中有改变if(FD_ISSET(max_fd, &inset)){//所关心的文件应在集合中n = read(max_fd, &ch, 1);if(n < 0){ perror("read error"); exit(1); }if('q' == ch){ break; }if('\n' == ch){//用户直接回车,忽略其操作continue;}write(1, &ch, n);putchar('\n');//printf("tv.tv_sec = %ld\n", tv.tv_sec);//printf("tv.tv_usec = %ld\n", tv.tv_usec);continue;}}else{//retval == 0printf("time out!\n");printf("tv.tv_sec = %ld\n", tv.tv_sec);printf("tv.tv_usec = %ld\n", tv.tv_usec);}}return 0;}
0 0
- 用户使用键盘循环输入字符,select监听终端,将用户输入的字符输出到终端上
- 获取用户输入的字符!
- 禁止用户输入字符
- C 逆序输出 用户输入的字符或数字
- Java 字符终端上获取输入三种方式
- Java 字符终端上获取输入三种方式
- Java 字符终端上获取输入三种方式
- Java 字符终端上获取输入 System.in
- Java 字符终端上获取输入三种方式
- Win32键盘钩子可监听记录所有键盘的有效字符输入并提供输出
- Neterm终端输入显示重复字符问题
- 只有数字字符的用户输入
- 写一个控制台应用程序,它接收用户输入的字符串,将其中的字符顺序,反顺序输出!
- 设置终端属性,不用回车获取终端输入字符
- 将用户输入的整数反向输出
- 编写一函数 用户输入字符串 函数将获取第一个单词输出 并丢掉后面的字符(图)
- 禁止用户输入特殊字符
- 禁止用户输入特殊字符
- 获取java项目地址
- 火狐(Firefox)插件Yslow使用心得
- PhpStorm 注册码
- Handle的消息传递机制
- AngularJS不错的
- 用户使用键盘循环输入字符,select监听终端,将用户输入的字符输出到终端上
- 简单的测试java代码运行时间
- 学习笔记(2)
- 【数据压缩】关于LZ4
- 三维空间中的两直线相交
- linq left join
- 生活不易,且行且珍惜!
- 数据库:JDBC编程
- 验证字符串是否是日期格式(支持24小时制)