linux 接收接盘输入的方式
方式一:利用select监控键盘文件/dev/tty
读取键盘文件“/dev/tty”的数据,其执行流程如下:
首先,打开键盘文件 fd = open("/dev/tty", O_RDONLY | O_NONB);
其次,利用select监控键盘文件的读状态 ret = select(fd, &fdsetR, NULL, NULL, timeout);
然后,利用read读取内容 read(fd, &buff, len);
测试代码如下:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <assert.h>int main()
{int keyboard;int ret;ssize_t i;char buff[32];fd_set readfd;struct timeval timeout;keyboard = open("/dev/tty", O_RDONLY | O_NONBLOCK);assert(keyboard > 0);while(1){timeout.tv_sec = 5;timeout.tv_usec = 0;FD_ZERO(&readfd);FD_SET(keyboard, &readfd);ret = select(keyboard + 1, &readfd, NULL, NULL, &timeout);if (ret == -1)perror("select error");else if (ret){if (FD_ISSET(keyboard, &readfd)){i = read(keyboard, buff, 31);buff[i]='\0';printf("the input is %s\n", buff);if (strncmp("exit", buff, 4) == 0)break;}}else if (ret == 0){printf("time out\n");}}return 0;
}
方式二:利用预定义的文件描述符STDIN_FILENO
STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。 定义文件\include\unistd.h中,明确说明了是文件描述符 /* Standard file descriptors. */ #define STDIN_FILENO 0 /* Standard input. */ #define STDOUT_FILENO 1 /* Standard output. */ #define STDERR_FILENO 2 /* Standard error output. */ 对其用法,在博客《Linux中的STDIN_FILENO和STDOUT_FILENO》存在实例代码
方式三:利用stdin
stdin等是FILE *类型,属于标准I/O
对于还存在的其他方式,希望大家指出,补充。
linux 接收接盘输入的方式相关推荐
- C#接收接盘输入之输入绑定和键盘钩子
项目中遇到用键盘输入来执行流程的需求,然后去搜索,大致搜到下面几种方式:1.事件:2.输入绑定3.键盘钩子 其中事件和输入绑定,只能在窗口激活或控件不失焦的情况才能使用. 键盘钩子属于系统全局的方式, ...
- Linux中read接收用户输入
#!/bin/bash #提示Please input your name并等待20秒,把输入内容存入变量name中 read -t 20 -p "Please input your nam ...
- linux模拟手柄输入,linux下如何模拟按键输入和模拟鼠标
查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键 ...
- Xamarin iOS教程之使用按钮接接收用户输入
Xamarin iOS教程之使用按钮接接收用户输入 Xamarin iOS使用按钮接接收用户输入 按钮是用户交互的最基础控件.即使是在iPhone或者iPad中,用户使用最多操作也是通过触摸实现点击 ...
- linux最常用的目录表示,Linux磁盘分区的命名方式和常用目录?【每日一个知识点第84期-Linux】...
磁盘分区对于入门的linux来说,是非常入门的技能,也是日常管理中常用技能之一,今天我们来做一个回顾,帮助大家提升磁盘分区的技能. [84期主题]Linux磁盘分区的命名方式和常用目录? Linux分 ...
- linux远程登录三种方式telnet,ssh,vnc
linux远程连接三种方式telnet,ssh,vnc telnet和ssh服务只能实现基于字符界面的远程控制,如果要基于图形界面进行远程控制,可以借助免费的VNC来完成. 一.telnet连接 1. ...
- linux安装oracle tar,在linux as4上用tar方式安装oracle 10g步骤教程-Oracle
今天在linux as4上用tar方式安装oracle 10g,下面简单那记录步骤及安装过程中出现的问题. 原数据库所在服务器信息: [oracle@haoc2008 data]$ more /etc ...
- Android EditText接收扫码枪输入,有时缺位,有时出现两次回车
最近做Android项目时,需要使用外接扫码枪扫描条码,并且接收条码输入的EditText同时还要能接收商品名称的输入,在开发调试的过程中发现,使用扫码枪时会出现条码信息丢失,或者扫码输入过程中出现两 ...
- 前端工具-Yeoman模板 + 接收用户输入
开门见山 在前端工具-自定义generator文章中,介绍了如何自定义generator模块,以及生成对应的文件,如果是一个接一个写文件的话比较费力,好在我们有模板语法通过模板语法,大大提高了效率 模 ...
最新文章
- YY的GCD 莫比乌斯反演
- TensorFlow学习笔记(一):数据操作指南
- Spring Boot异常
- JZOJ 5068. 【GDSOI2017第二轮模拟】树
- java document select_javasript 操作option select
- 想快速体验谷歌 Fuchsia OS?FImage 项目来了!
- 二、八大基本类型,由来和详解(超全)/读完这个面试再也不怕问到蒙
- 学校技能节计算机专业方案,第十九届技能节展示方案
- HFSS学习笔记—18.SMA模拟端口
- java抽签_java 抽签程序 【滚动抽签】
- ies4linux 本地安装,Linux下离线安装ies4linux
- The JSP specification requires that an attribute name is preceded by whitespace 解决
- 高职单招面试自我介绍稿子计算机专业,单招面试自我介绍稿子范文
- coso全称是什么_京东方全称是什么
- DBCO-PEG-SAS DBCO--聚乙二醇-琥珀酰亚胺琥珀酰亚胺酯
- 机房迁移测试时需要注意事项
- 图书馆炭火盆旁边的数学遐想
- Python 爬微信男女人数和各地区人数
- 国内10大github开源产品(前端)
- 使用WebGL去实现一个拖拽式UI代码生成App