实用技巧:“禁用”Linux终端输出的回显
http://tech.ddvip.com 2008年05月29日 社区交流
内容摘要:Termios结构是在POSIX规范中定义的一个标准接口,通过设置termios类型的数据结构中值及相关函数调用便可以对终端接口进行控制。
Termios结构是在POSIX规范中定义的一个标准接口,通过设置termios类型的数据结构中值及相关函数调用便可以对终端接口进行控制。
控制终端的输出回显主要用到"本地模式"中可用的c_lflag的宏ECHO,ECHO宏定义为:启用输入字符的本地回显功能
此功能最常见的应用莫过于控制输入密码的回显,如通过 $sudo /etc/** 获取管理权限或终端登录MySQL时输入的密码是不会显示出来的。
而termios结构的定义包含在termios.h头文件中,直接看代码:
#include
#include
#include
#define PASSWORD_LEN 12
int main(){
struct termios initialrsettings, newrsettings;
char password[PASSWORD_LEN + 1];
tcgetattr(fileno(stdin),&initialrsettings); #获取termios结构并保存
newrsettings = initialrsettings;
newrsettings.c_lflag &= ~ECHO; #清除变量c_lflag中由ECHO定义的比特
printf("Please Enter Password:");
if( tcsetattr(fileno(stdin),TCSAFLUSH,&newrsettings) != 0 ){
fprintf(stderr,"Could not set arrributes
");
}else{
fgets(password,PASSWORD_LEN,stdin);
tcsetattr(fileno(stdin),TCSANOW,&initialrsettings); #还原之前的termios结构
fprintf(stdout,"
You entered %s as the password
",password);
}
exit(0);
}
最后编译、运行之,达到预期目的~
不同Linux发行版需要包含的头文件可能存在细微的差异,以下是我主机的信息:
Hardware:i686
OS:Linux (ubuntu desktop 7.10)
Release:2.6.22-14-generic
Version:#1 SMP Tue Feb 12 07:42:25 UTC 2008
责编:豆豆技术应用
- Linux/Unix 新闻
- Linux/Unix 入门
- Linux/Unix 命令
- Linux/Unix 安装
- Linux 嵌入式系统
- Linux/Unix 编程
- Linux/Unix 管理
- Linux/Unix 桌面
- Linux/Unix 内核
- Linux/Unix 软件
- SCO Unix
- NetBSD
- OpenBSD
- Redhat/Fedora Linux
- 手机
- Linux/Unix find 搜索命令
- Linux/Unix vi 命令
- Linux/Unix kde 桌面环境
- Linux/Unix GNOME 桌面环境
- Linux/Unix Make 命令
- Linux/Unix crontab 命令
- Linux/Unix ext3 文件系统
- Linux/Unix 文件系统详解
- Linux/Unix ADSL 拨号设置
- Linux/Unix GRUB 配置及应用
- Linux/Unix nfs配置
- Linux/Unix 硬件信息查看及管理
- Linux/Unix 优化
- Linux/Unix 交换分区Swap管理及应用
- Linux/Unix 用户管理
- Linux/Unix Ramdisk
- Linux/Unix 密码恢复管理
- Linux/Unix 文件删除恢复
- Linux/Unix fdisk分区
- Linux/Unix lvs负载均衡管理
- Linux/Unix root用户
- Linux/Unix 集群
- Linux/Unix 日志
- 更多Linux/Unix专题……