¿Por qué el comando `reset` incluye un retraso?


17

El resetcomando incluye un retraso, entre borrar la pantalla y volver. Esto es incluso en el último tipo de terminal xterm-256color. ¿Por qué?

man resetno menciona un retraso, solo la impresión de cadenas especiales. (Tampoco menciona borrar la pantalla. Supongo que esto está incluido en la cadena de inicialización del terminal).

Noto el siguiente resultado en 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

Respuestas:


24

Los terminales reales (hardware) lo necesitan. Por ejemplo, con algunos, la única forma de restablecerlos es restablecer el hardware.

Es inofensivo con un emulador de terminal, y dado que no hay una forma convencional de notar la diferencia (y demasiado difícil de determinar si alguna secuencia de escape podría restablecer el hardware), se resetsupone que su terminal es real.

El retraso se remonta a tset3BSD en 1979, así:

    /* 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 */
    }

Ha evolucionado algo en ncurses, pero usando la misma directriz:

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

Otras lecturas:


1
En el código de OpenBSD, la espera de 1000 ms (a través de llamadas napms(1000)) va acompañada del comentario/* Settle the terminal. */
Kusalananda

2
OpenBSD usa ncurses.
Thomas Dickey

1
Mientras estamos aquí, ¿podría explicar cómo eliminar la demora si es posible?
user541686

77
@Mehrdad Podrías intentarlo tput reset. No parece usar el retraso.
Ross Ridge

3
@Mehrdad stty saneparece corregir la primera condición, sin demora.
sourcejedi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.