
前提・実現したいこと
Linux, Unixにおいて、端末状態をリセットするというのはどういう意味なんでしょうか。C言語で端末状態をリセットする関数が存在するのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
ベストアンサー
C言語で端末属性をリセットする関数が存在するのでしょうか。
書籍の前後の内容が判らないので推測になりますが、掲示されているソースコードの tty_mode()
関数が正にそれを行っています。
c
1main() 2{ 3 int response; 4 5 tty_mode(0); // ここで端末の設定を保存しておく 6 7 set_cr_noecho_mode(); 8 set_nodelay_mode(); 9 response = get_response(ASK, TRIES); 10 11 tty_mode(1); // 設定を元の状態に戻す 12 13 return response; 14} 15 16 : 17 18tty_mode(int how) 19{ 20 static struct termios original_mode; 21 static int original_flags; 22 if (how == 0) 23 { 24 tcgetattr(0, &original_mode); 25 original_flags = fcntl(0, F_GETFL); // GET FLags 26 } 27 else 28 { 29 tcsetattr(0, TCSANOW, &original_mode); // TCSANOW: change occurs immediately 30 fcntl(0, F_SETFL, original_flags); // SET FLags 31 } 32}
「端末属性をリセット」するというのはどういう意味なんでしょうか。
上記のコードで言えば、ttymode(0);
を実行した時点の端末属性の状態に復帰する、という意味になります。
投稿2022/01/27 14:01
総合スコア21106
0
端末属性をリセットし、
表現が曖昧なので、なんとも言えません。言った人に聞くしか無い。
reset
コマンドの実行のことかも知れません。ただこれは「端末属性をリセット」というより「端末状態をリセット」です。バイナリーファイルをcat
したりして、端末状態がおかしくなった阿合に使います。
あと、stty
コマンドで設定できるエコーバックやローモード、キー割り当て等の初期化ですが、この設定の初期値というのは環境によって異なるので、あらかじめstty -g
で状態を記録して置いてそれを引数として実行するということになります。こっちは端末属性といえば言えますが、初期状態がわからないと初期化できない。
投稿2022/01/27 08:49
総合スコア86281
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/01/28 04:46
2022/01/28 04:55 編集
退会済みユーザー
2022/01/29 01:33 編集
2022/01/28 12:09
退会済みユーザー
2022/01/28 12:57