1

コマンドラインインターフェースを作ろうとしています。Ctrl+を処理したいZ。それはCtrl+Cをうまく処理します。今のところ、 + を処理する前に + を 2 回押す必要がありCtrlます。+を処理するコードは次のとおりです。ZCtrlZCtrlZ

            } else if (c == 26) { // ctrl-z
                resetTerminal();
                kill(getpid(), SIGTSTP);
                setTerminal();

なぜ 2 回ヒットしなければならないのかはわかっていますが、解決策がわかりません。resetTerminal() のコードは次のとおりです。

void resetTerminal() {
    // reset terminal to the way it was
    tcsetattr(STDIN_FILENO, TCSANOW, &tty_old);
}

無効になる古い端末設定に戻ります。

tty_new.c_lflag &= ~(ICANON | ECHO | ISIG);

Ctrl古い端末設定に戻って+Zを伝播し、プログラムを一時停止できるようにする方法がよくわかりません。

何か案は?ありがとう。

4

0 に答える 0