Comment mettre à jour la sortie de ligne de commande?

Sous Linux, stdout en ligne de commande, je veux mettre à jour une zone spécifique, telle que la sortie apt-get :

 54% [Waiting for headers] [Waiting for headers] 211 kB/s 3s 

le pourcentage , kB / s et seconde sera mis à jour chaque seconde.

Si nous utilisons printf nous obtiendrons plusieurs lignes en sortie. J’ai essayé de suivre printf :

 printf("\e[1;1H\e[2J"); 

Mais il nettoie toute la sortie.

Ma question est de savoir comment mettre à jour un domaine spécifique et garder les autres stables?

Utilisez le retour chariot. Cela ramènera le curseur au début de la ligne, à partir duquel vous pourrez écraser ce qui était dans la ligne auparavant. Par exemple:

 printf("Hello, world!\rX"); 

Sera visible comme:

 Xello, world! 

Assurez-vous de vider souvent la stdout si vous souhaitez qu’elle soit visible:

 fflush(stdout); 

De plus, si vous voulez une sortie de console en plein écran, envisagez d’utiliser ncurses . Si vous voulez une ligne d’entrée modifiable, la bibliothèque readline GNU est également utile!