当前位置: 技术问答>linux和unix
做linux下的程序,如何在从标准输入读密码时关闭回显?
来源: 互联网 发布时间:2015-09-21
本文导语: 如题 | { struct termios origt; struct termios new; int mode; tcgetattr(STDIN_FILENO, &origt); new = origt; new.c_iflag &= ~(BRKINT | ICRNL); new.c_lflag &= ~...
如题
|
{
struct termios origt;
struct termios new;
int mode;
tcgetattr(STDIN_FILENO, &origt);
new = origt;
new.c_iflag &= ~(BRKINT | ICRNL);
new.c_lflag &= ~(ECHO | ICANON | ISIG);
tcsetattr(STDIN_FILENO, TCSANOW, &new);
mode = fcntl(STDIN_FILENO, F_GETFL);
mode |= O_NDELAY;
fcntl(STDIN_FILENO, F_SETFL, mode);
}
struct termios origt;
struct termios new;
int mode;
tcgetattr(STDIN_FILENO, &origt);
new = origt;
new.c_iflag &= ~(BRKINT | ICRNL);
new.c_lflag &= ~(ECHO | ICANON | ISIG);
tcsetattr(STDIN_FILENO, TCSANOW, &new);
mode = fcntl(STDIN_FILENO, F_GETFL);
mode |= O_NDELAY;
fcntl(STDIN_FILENO, F_SETFL, mode);
}
|
#include
#include
#include
#include
#include
#include
int getPasswd(char *passwd)
{
struct termio tbuf_old,tbuf;
ioctl(0, TCGETA, &tbuf_old);
ioctl(0, TCGETA, &tbuf);
tbuf.c_lflag &=~ECHO;
if (ioctl(0, TCSETAF, &tbuf) != 0)
return;
printf("please input passwd:");
scanf("%s", passwd);
ioctl(0, TCSETAF, &tbuf_old);
return 0;
};
int main()
{
char passwd[8];
getPasswd( passwd );
printf("pass: %sn", passwd);
return 1;
}
#include
#include
#include
#include
#include
int getPasswd(char *passwd)
{
struct termio tbuf_old,tbuf;
ioctl(0, TCGETA, &tbuf_old);
ioctl(0, TCGETA, &tbuf);
tbuf.c_lflag &=~ECHO;
if (ioctl(0, TCSETAF, &tbuf) != 0)
return;
printf("please input passwd:");
scanf("%s", passwd);
ioctl(0, TCSETAF, &tbuf_old);
return 0;
};
int main()
{
char passwd[8];
getPasswd( passwd );
printf("pass: %sn", passwd);
return 1;
}
|
使用getpass函数
欢迎访问我的个人网站 www.linuxc.net
欢迎访问我的个人网站 www.linuxc.net