Linux OS で ac アプリケーションを実行しています。このアプリは、端末からキーボード キーを取得し、リモート サーバーに送信します。
以下のコードは、ターミナルを開きます。
// 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;
私はこのアプリを作成していません。このコードを理解しようとしているだけです。前のエンジニアがエコーを無効にした理由がわかりません。送信する必要があるデータは秘密ではありません。これには他にどんな意味があるでしょうか?パフォーマンス?バッファリングを無効にしますか?
また、「ttynew.c_lflag &= ~ICANON;」の説明をいただければ幸いです。コード。
前もって感謝します。