我有此代码,目的是在终端的登录屏幕上隐藏我的密码。登录后,所有输入仍为空白。 getline
完成后,如何将其设置为正常,例如恢复为默认值?
#include <iostream>
#include <string>
#include <termios.h>
#include <unistd.h>
using namespace std;
int main()
{
termios oldt;
tcgetattr(STDIN_FILENO, &oldt);
termios newt = oldt;
newt.c_lflag &= ~ECHO;
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
string s;
getline(cin, s);
return 0;
}//main
最佳答案
您已经通过get调用保存了先前的终端状态;现在,您只需使用set调用以与设置新状态相同的方式来恢复它:
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
(对于将来的访问者:第二个参数是一个标志,表示更改将立即发生。)
关于c++ - 关闭回声后如何再次回声输入字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11975603/