linux gcc getch,模拟实现getch()
上学期在写了一个小项目,现在想把它移植到linux上,但是getch()这个函数在linux中愣是让我使用不愉快,安装了个curese,在网上找了一堆东西都没解决。最后还是自己模拟实现一个感觉还简单些。代码如下
/*---------------------------------------
** copyright (c) 2013-3-2 DeltaYang
** E-mail: DeltaYang89@gmail.com
** getch.c:模拟实现getch()
**--------------------------------------*/
#include
#include //操作终端
#include
#include
#include
char getch()
{
int c=0;
struct termios org_opts, new_opts;
int res=0;
//保留终端原来设置
res=tcgetattr(STDIN_FILENO, &org_opts);
assert(res==0);
//从新设置终端参数
memcpy(&new_opts, &org_opts, sizeof(new_opts));
new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);
tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);
c=getchar();
//恢复中断设置
res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);assert(res==0);
return c;
}
//测试模拟密码输入
int main(int argc,char** argv)
{
int pwdlen=10;
char ch[10];
int i=0;
printf("PASSWORD:");
fflush(stdin);
ch[0]=getch();
while(ch[i]!='\n'&&i<9)
{
printf("*");
i++;
ch[i]=getch();
}
ch[i]='\0';
printf("\n---->:%s\n",ch);
}
[delta@localhost:getch]$ gcc getch.c -o getch
[delta@localhost:getch]$ ./getch
PASSWORD:********
---->:detlfhgh
[delta@localhost:getch]$
linux gcc getch,模拟实现getch()相关推荐
- 基于Linux的内存模拟型的字符IO设备驱动程序的设计,并实现线程间通信
要求:基于Linux的内存模拟型的字符IO设备驱动程序的设计,并编写应用程序实现线程间的通信. 基于Linux的内存模拟型的字符IO设备驱动程序的设计 1 内存模拟型的字符IO设备驱动程序memDrv ...
- Linux GCC lib库相互引用,互相依赖(交叉引用)链接解决办法
Linux GCC中,如果lib a依赖b,b又依赖a,链接的时候无论a放在前,还是b放在前,都会提示unrefrence. 解决办法就是: 链接的时候a链接两次,即: -la -lb -la
- linux gcc中sin30度,学习gcc.pdf
学习gcc 如何在 Ubuntu 下安装和使用 gcc GCC 是在Linux 系统中用的比较多的编译器,一般做Linux 开发的朋友都会用 GCC 编译器,但今天 在 Ubuntu 上安装 GCC ...
- linux gcc 示例_最好的Linux示例
linux gcc 示例 Linux is a powerful operating system that powers most servers and most mobile devices. ...
- 在wsl下运行c语言,在Windows10通过WSL架设linux/gcc c语言学习环境
在Windows10通过WSL架设linux/gcc c语言学习环境 零:简单介绍与先决条件 中国一般的大学C课程中都使用很过时的编译器来进行教授--比如说什么visual studio 6.0啊,d ...
- 深入剖析 linux GCC 4.4 的 STL string
转自: 深入剖析 linux GCC 4.4 的 STL string 本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Wri ...
- linux gcc 静态 动态链接库
linux gcc 静态 动态链接库 静态链接库 首先生成依赖函数的目标文件 gcc -c source1.c source2.c; 然后归档目标文件到静态库 ar -rcs libYourID.a ...
- linux源码gpio模拟i2c,linux内核gpio模拟i2c实例.doc
linux内核gpio模拟i2c实例.doc linux内核GPIO模拟I2C实例2010-10-11作者:cvip302814来源:cvip302814的blog前言:在许多情况下,我们并没有足够的 ...
- 2016年linux认证考试,2016年Linux认证考试模拟练习及答案
2016年Linux认证考试模拟练习及答案 下面哪个命令能去掉主引导信息里的内容(选择最合适的答案) a.fdisk /mbr b.format /mbr c.mbr/format d.mbr/rep ...
最新文章
- oracle 概要文件不存在,oracle 概要文件 - kecy1217的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- Python自动化运维——文件内容差异对比
- SparkContext: Error initializing SparkContext解决方法
- Halcon学习笔记:select_points_object_model_3d(3D对象模型阀值分割)
- BookStack在线文档管理系统 v2.9
- (7)FPGA十大设计思想(第2天)
- C语言switch如何退出,C语言萌新,想问问如何让下面那个switch函数输出的结果继续...
- c语言 条件 设a 3 b 4,2012年计算机等级二级C语言章节习题及答案(4)
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
- 计算机蓝屏 代码0000a,win7 64位系统蓝屏代码0x0000000a的原因及解决方法
- 芯片数据分析笔记【03】 | GEO数据库使用教程及在线数据分析工具
- JAVA调用方法 万年历
- sketchup草图家具拆单软件 有屋 衣柜橱柜 全屋定制 设计渲染生产一体化SU
- 教你用python爬虫下载1w+『ppt模板』,再也不用付费去购买啦!
- 【等保】二级等保常见问题解答汇总
- 树莓派python摄像头文字识别_古德微树莓派摄像头文字识别
- 屏幕小于6英寸的手机_2019小屏手机有哪些 8款6英寸以下小屏全面屏手机推荐 (全文)...
- vmvare虚拟机无法读取ntfs的U盘解决方法,以及更换镜像下载源
- 520催泪感人表白心动文案怎么用免费的记笔记软件记录?
- YUV420(I420)与YV12的区别,YUV420p与YUV420区别
热门文章
- 监听springboot进程,如果关闭就重启
- 关于7z各种不能用的操作解决办法 7za 7z x Error: Can not open file as archive there is no such archive
- 蓝拓扑便携式分析仪驱动程序_拔出便携式USB硬盘驱动器会损坏计算机吗?
- Turtle库绘画实例
- ogg在DDL语句同步时出现[Error code [942], ORA-00942的分析
- 聚合架构-晓岩企业架构系列讲座整理(0-19)
- CentOS7 DM-Multipath+HUAWEI OceanStor存储多路径配置
- IOS开发—iOS视频拍摄与压缩
- ASEMI场效应管7N60的极限和静态参数详解
- C语言课程设计图书馆管理系统