Как работает вывод в команде top?

Каким образом команда top обновляет таблицу без очистки консоли?

Я пробовал обновлять через system("clear"), как показано в интернете, и через puts("[H[2J"), как показано в исходниках, но это далеко не то же самое.


Ответы (1 шт):

Автор решения: OneGuy

Спасибо джентльменам в комментариях. Они направили на верный путь.

Вот такое заклинание у меня вышло:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#define CONSOLE_BOTTOM_CLEAR "\e[0J"

int main(char argc, char *argv[])
{
    int i = 0;
    printf("\e[s"); //сохраняет позицию курсора
    while(1) {
        printf("%d", i);
        ++i;
        puts(CONSOLE_BOTTOM_CLEAR); //чистит все, что внизу до дна
        printf("\e[u"); //восстанавливает позицию курсора
        sleep(2);
    }
}

Однако это сделано своими руками. Как исходник работает для меня до сих пор загадка.

→ Ссылка