Os terminais reais (hardware) precisam disso. Por exemplo, com alguns, a única maneira de redefini-los é fazer uma reinicialização de hardware.
É inofensivo com um emulador de terminal e, como não há uma maneira convencional de diferenciar (e muito difícil determinar se alguma sequência de escape pode fazer uma reinicialização de hardware), reset
assume que seu terminal é real.
O tempo de atraso data de tset
no 3BSD em 1979, assim:
/* 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 */
}
Ele evoluiu um pouco nas ncurses, mas usando a mesma diretriz:
if (!noinit) {
if (send_init_strings(my_fd, &oldmode)) {
(void) putc('\r', stderr);
(void) fflush(stderr);
(void) napms(1000); /* Settle the terminal. */
}
}
Leitura adicional: