コマンドラインインターフェースを作ろうとしています。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を伝播し、プログラムを一時停止できるようにする方法がよくわかりません。
何か案は?ありがとう。