linux getch()实现

#include <termio.h>
 
int getch(void)
{
     struct termios tm, tm_old;
     int fd = 0, ch;
 
     if (tcgetattr(fd, &tm) < 0) {//保存现在的终端设置
          return -1;
     }
 
     tm_old = tm;
     cfmakeraw(&tm);//更改终端设置为原始模式,该模式下所有的输入数据以字节为单位被处理
     if (tcsetattr(fd, TCSANOW, &tm) < 0) {//设置上更改之后的设置
          return -1;
     }
 
     ch = getchar();
     if (tcsetattr(fd, TCSANOW, &tm_old) < 0) {//更改设置为最初的样子
          return -1;
     }
    
     return ch;
}

时间: 2024-10-10 09:42:52

linux getch()实现的相关文章

linux系统下的getch和getche函数的实现

首先要知道:getch与getche是在conio.h这个头文件里面的,但是,但是conio.h这个文件不是c语言的标准库文件,所以在linux的gcc下是没有这个头文件的,而我们大多数人使用的主要是getch与getche函数,因为getchar函数的功能不是很强大,言归正传,先灌输一些关于linux的知识 stty是一个用来改变并打印终端行设置的常用命令. 1 ,在命令行下,禁止输出大写的方法 stty -icanon 设置一次性读完操作,如使用getchar()读操作,不需要按enter

C基础 一个可以改变linux的函数getch

引言  -  getch简述 引用老的TC版本getch说明. (文章介绍点有点窄,  应用点都是一些恐龙游戏时代的开发细节) #include <conio.h> /* * 立即从客户端得到输入的字符. 出错返回EOF */ int __cdecl getch(void); 记得三年之前看过一本书 <<C专家编程>> 有一章提到在立即从标准输入中得到输入字符(后面还介绍了一种linux实现, 对于现在linux版本不行了). 那位作者评价就是, 由于linux对于''

linux 下getch()函数实现

//调用 //char *ptr = (char *)malloc(sizeof(char) * 128); //ptr = get_passwd(); //printf("\n"); #include<stdio.h> #include<termios.h> #include<unistd.h> #include<assert.h> #include<string.h> #include <stdlib.h> i

linux系统下解决getch()输入数值不回显示

在linux系统下开发C 程序却会遇到系统不支持conio.h头文件,无法使用getch()不回显函数.下面就演示如何构建函数实现数值输入不回显. 1 #include <stdio.h> 2 3 #include <termios.h> 4 5 #include <unistd.h> 6 7 #include <errno.h> 8 9 #define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL) 10 11 //函数

getch()函数

这个函数是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车,有的C语言命令行程序会用到此函数做游戏,但是这个函数并非标准函数,要注意移植性! 中文名 无 外文名 getch 头文件 conio.h 注意事项 此函数非标准函数,请注意移植性 语    种 C语言,C++兼容 目录 1主要内容 2易错点 1主要内容编辑 getch(): 所在头文件:conio.h 函数用途:从控制台读取一个字符,但不显示在屏幕上 函数原型:int getch(void) 返回值:读取的字符 例如: c

getch

主要内容 getch(): 所在头文件:conio.h 函数用途:从控制台读取一个字符,但不显示在屏幕上 函数原型:int getch(void) 返回值:读取的字符 例如: char ch;或int ch: _getch();或ch=_getch(); 用_getch();会等待你按下任意键,再继续执行下面的语句: 用ch=_getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句. 易错点 1.所在头文件是conio.h.而不是stdio.h. 2.在

关于Linux下clrsrc函数的实现

在windows下,c语言有库conio.h,实现了不少函数,但是Linux c没有这个库,内部的函数需要自己实现. //clrsrc清屏函数的一种实现:void clrscr(void) { system("clear");//需要头文件stdlib.h }//调用system("clear") //getch()函数的一种实现方法#include<stdio.h> #incldue<stdlib.h> int main(){ char c

linux中无 conio.h的解决办法

conio.h不是C标准库中的头文件,在ISO和POSIX标准中均没有定义.conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等.大部分DOS,Windows,Phar Lap,DOSX,OS/2等平台上的C编译器提供此文件,UNIX和Linux平台的C编译器本身通常不包含此头文件,但已经有其兼容包,可参考: http://conio.sourceforg

Linux 0.11 中字符设备的使用

Linux 0.11 字符设备的使用 一.概述 本文自顶向下一步步探索字符设备的读写是怎么完成的.通常我们在Linux应用程序中用open.read.write对各种类型的文件进行操作.我们可以从键盘输入,然后命令行窗口会显示你的输入,有输出的话则命令行窗口会显示输出.为什么所有的设备在Linux中都被看成是一个个文件,可以通过统一的read.write直接进行读写?文件句柄与终端设备有什么关联?为什么Linux允许多个控制终端登录?tty又是什么东西?读写时将发生哪些硬件中断,驱动程序是怎么回