Это необходимо для реальных (аппаратных) терминалов. Например, для некоторых единственный способ сбросить их - это выполнить аппаратный сброс.
Это безвредно с эмулятором терминала, и поскольку нет обычного способа определить разницу (и слишком сложно определить, может ли какая-то escape-последовательность вызвать аппаратный сброс), reset
предполагает, что ваш терминал настоящий .
Задержка восходит к tset
в 3BSD в 1979 году, например:
/* 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. */
}
}
Дополнительная литература:
Для подсчета времени важны тики процессора и тики, потраченные процессом на процессор. Если вы говорите о времени, которое процесс тратит на процессор, вы должны суммировать тики при работе в режиме пользователя и ядра.