編集(以前の回答は間違っていました。質問を誤解していました):
コマンドmore
は端末構成を変更しています。
起動している tty を見つけて、./a.out | more
別の tty (または他のターミナル) からこのコマンドを実行します。
stty -F /dev/yourTTY echo
そして、コンソールに再びエコーが表示されます
疑似端末を使用している可能性がありますが、stty
コマンドも同様に機能するはずです。
例:
- 現在の端末を確認します。
ps ax | grep $$ | awk '{ print $2 }'
- コマンドを実行します。
./a.out | more
- 新しいターミナルを開き、次のコマンドを実行します。
stty -F /dev/resultFromFirstStep echo
- 最初の端末で再びエコーがあることを確認してください。
編集:
ところで、誰かが興味を持っている場合は、コード ソースmore
を読み取る端末がどのように変更されているかを確認できます。
void set_tty () {
otty.c_lflag &= ~(ICANON|ECHO);
otty.c_cc[VMIN] = 1; /* read at least 1 char */
otty.c_cc[VTIME] = 0; /* no timeout */
stty(fileno(stderr), &otty);
}
ECHOとICANONを奪っています。