设为首页 加入收藏

TOP

Linux下用C语言来模拟密码输入
2014-11-24 08:32:25 来源: 作者: 【 】 浏览:1
Tags:Linux 下用 语言 模拟 密码 输入

以前在Linux环境下,想输入密码(关闭回显)时都是用getpass函数,今天无意中看到手册上说:This function is obsolete. Do not use it.


那我就自己实现一个类似的功能吧(功能相同,原理不同)


程序的思路很简单:关闭回显,读取输入,恢复设置。


上代码:


#include
#include
#include
#include


#define MAXLEN 256


//参数dest是目标字符串, maxlen是最大长度,
//如果输入超过了最大长度,则密码将会被截断
//成功返回0,否则返回-1
int new_getpass(char *dest, int maxlen)
{
struct termios oldflags, newflags;
int len;


//设置终端为不回显模式
tcgetattr(fileno(stdin), &oldflags);
newflags = oldflags;
newflags.c_lflag &= ~ECHO;
newflags.c_lflag |= ECHONL;
if (tcsetattr(fileno(stdin), TCSANOW, &newflags) != 0)
{
perror("tcsetattr");
return -1;
}


//获取来自键盘的输入
fgets(dest, maxlen, stdin);
len = strlen(dest);
if( len > maxlen-1 )
len = maxlen - 1;
dest[len-1] = 0;


//恢复原来的终端设置
if (tcsetattr(fileno(stdin), TCSANOW, &oldflags) != 0)
{
perror("tcsetattr");
return -1;
}
return 0;
}


int main()
{
char password[MAXLEN];
printf("Enter password: ");
new_getpass(password, MAXLEN);
printf("You password is: %s\n", password);
return 0;
}



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux C语言:开启一个专门用来接.. 下一篇《UNIX网络编程》例子程序中所使..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·定义一个类模板并实 (2025-12-27 06:52:28)
·一文搞懂怎么用C语言 (2025-12-27 06:52:25)
·常用C模板范文_百度 (2025-12-27 06:52:21)
·【C语言】动态内存管 (2025-12-27 06:23:20)
·C语言中的内存管理 - (2025-12-27 06:23:16)