在终端中禁用本地回显的含义

我在Linux操作系统上运行了交流应用程序。 此应用程序从终端获取键盘密钥并将它们发送到远程服务器。
下面的代码打开终端:

// save old terminal attributes if (tcgetattr(0, &ttyold) != 0) { fprintf(stderr, "Failed getting terminal attributes\n"); goto out; } ttynew = ttyold; ttynew.c_iflag = 0; ttynew.c_oflag = 0; // disable canonical mode (don't buffer by line) ttynew.c_lflag &= ~ICANON; // disable local echo ttynew.c_lflag &= ~ECHO; ttynew.c_cc[VMIN] = 1; ttynew.c_cc[VTIME] = 1; // set new terminal attributes if (tcsetattr(0, TCSANOW, &ttynew) != 0) { fprintf(stderr, "Failed setting terminal attributes\n"); goto out; 

我没有写这个应用程序,我只是想了解这段代码。 我不明白为什么前一个engeneer禁用了回声? 必须发送的数据不是秘密的。 还有什么可能是这个意思? 性能? 禁用缓冲?
另外,我很乐意得到“ttynew.c_lflag&= ~ICAANON”的解释。 码。

提前致谢。

如果接收端没有回显,则需要启用此function。 如果接收端回应,则禁用它,否则最终会看到所有内容都加倍。

这里解释了一切:

在规范模式下:输入逐行可用。 键入其中一个行分隔符(NL,EOL,EOL2;或行首的EOF)时,输入行可用。

基本上,数据是在EOL之后发送的,而不是按字符发送的。