「リセット」コマンドに遅延が含まれるのはなぜですか?

「リセット」コマンドに遅延が含まれるのはなぜですか?

このresetコマンドには、画面の消去と復帰の間の遅延が含まれます。これは最新の端末タイプでも同様ですxterm-256color。なぜ?

man reset遅延についての言及はなく、特殊な文字列印刷のみが可能です。 (画面の消去についての言及もありません。端末の初期化文字列に含まれているようです。)

私は次のような結果を見つけましたstrace -f reset

nanosleep({tv_sec=1, tv_nsec=0}, 0x7ffe1964f100) = 0
ioctl(2, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon echo ...}) = 0

ベストアンサー1

実際の(ハードウェア)端末にはこれが必要です。たとえば、一部のデバイスでは、リセットする唯一の方法はハードウェアリセットを実行することです。

これは、ターミナルエミュレータにとって無害であり、違いを区別する従来の方法がないため(特定のエスケープシーケンスがハードウェアリセットを引き起こす可能性があるかどうかを判断するのは困難です)、ターミナルが本当であると仮定しますreset

時間遅延はtset次のように1979年に3BSDにさかのぼります。

    /* output startup string */
    if (!RepOnly && !NoInit)
    {
            bufp = buf;
            if (tgetstr("is", &bufp) != 0)
                    prs(buf);
            bufp = buf;
            if (tgetstr("if", &bufp) != 0)
                    cat(buf);
            sleep(1);       /* let terminal settle down */
    }

ncursesで発展しましたが、同じ指示を使用します。

        if (!noinit) {
            if (send_init_strings(my_fd, &oldmode)) {
                (void) putc('\r', stderr);
                (void) fflush(stderr);
                (void) napms(1000);         /* Settle the terminal. */
            }
        }

追加資料:

  • 歴史tsetマニュアルページ)
  • 歴史tputマニュアルページ)

おすすめ記事