В C вы можете использовать функцию getpasswd()
, которая в значительной степени делает то же самое, что и stty
в оболочке, например:
#include <stdio.h>
#include <string.h>
#include <pwd.h>
#include <unistd.h>
int main()
{
char acct[80], password[80];
printf(“Account: “);
fgets(acct, 80, stdin);
acct[strlen(acct)-1] = 0; /* remove carriage return */
strncpy(password, getpass(“Password: “), 80);
printf(“You entered acct %s and pass %s\n”, acct, password);
return 0;
}
Вот эквивалентный сценарий оболочки, который использует stty
(который изменяетнастройки вашего tty
):
save_state=$(stty -g)
/bin/echo -n “Account: “
read acct
/bin/echo -n “Password: “
stty -echo
read password # this won’t echo
stty “$save_state”
echo “”
echo account = $acct and password = $password
Источник: Как я могу прочитать пароль, не отображая его в C?