termios.h如何使用位掩码来确定终端应该采用什么模式?

时间:2018-04-06 04:59:32

标签: c input terminal output bitmask

基本上,如果我写:

struct termios raw;
tcgetattr(STDIN_FILENO, &raw);
raw.c_lflag &= ~(ECHO);
tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw);

这样就不会显示用户输入,c_lflag允许tcsetattr()如何按预期工作?

1 个答案:

答案 0 :(得分:0)

您可以禁用ECHO以将输入NOT回显到输出,如下所示:

toptions.c_lflag &= ~(ECHO);

if (tcsetattr(fd, TCSANOW, &toptions) != 0)
{
    cout << "ERROR: " << errno << " from tcsetattr" <<endl;
    exit(1);
}

ECHO定义为:

  c_lflag中的

ECHO 控制输入是否立即重新作为输出回显。它独立于ICANON,尽管它们经常被打开   和一起。当passwd提示输入您的密码时,您的终端   处于规范模式,但ECHO已禁用。