当前位置: 技术问答>linux和unix
客户机程序中输入密码能否用****代替,而不是直接显示出来
来源: 互联网 发布时间:2015-03-08
本文导语: 请诸位帮忙! | tty programming. struct termios. 本地模式。 ECHO 关闭。 #include #include #define PASSWORD_LEN 8 int main() { struct termios initialrsettings, newrsettings; char password[PASSWORD_LEN + 1]...
请诸位帮忙!
|
tty programming. struct termios.
本地模式。
ECHO 关闭。
#include
#include
#define PASSWORD_LEN 8
int main()
{
struct termios initialrsettings, newrsettings;
char password[PASSWORD_LEN + 1];
tcgetattr(fileno(stdin),&initialrsettings);
newrsettings = initialrsettings;
newrsettings.c_flag &= ~ECHO; /* 关闭ECHO */
printf("Enter your password: ");
if (tcsetattr(fileno(stdin), TCSAFLUSH, &newrsettings) != 0) {
fprintf(stderr, "Could not set attributesn");
}
else {
fgets(password, PASSWORD_LEN, stdin);
/*tcsetattr(fileno(stdin), TCSANOW, &initialrsettings);
fprintf(stdout, "nYou entered %sn", password);*/
}
exit(0);
}
本地模式。
ECHO 关闭。
#include
#include
#define PASSWORD_LEN 8
int main()
{
struct termios initialrsettings, newrsettings;
char password[PASSWORD_LEN + 1];
tcgetattr(fileno(stdin),&initialrsettings);
newrsettings = initialrsettings;
newrsettings.c_flag &= ~ECHO; /* 关闭ECHO */
printf("Enter your password: ");
if (tcsetattr(fileno(stdin), TCSAFLUSH, &newrsettings) != 0) {
fprintf(stderr, "Could not set attributesn");
}
else {
fgets(password, PASSWORD_LEN, stdin);
/*tcsetattr(fileno(stdin), TCSANOW, &initialrsettings);
fprintf(stdout, "nYou entered %sn", password);*/
}
exit(0);
}
|
将终端属性设置为禁止回显,或直接设置为RAW方式,然后客户端程序再往终端上打印"****"即可
|
#include
char *getpass( const char * prompt );
连*都不显示呵呵
char *getpass( const char * prompt );
连*都不显示呵呵