Come è possibile che un programma scriva sulla stessa riga?

0

Molti programmi sono in grado di "riscrivere" sulla stessa linea, non in un modo STDOUT.
Ad esempio scp scrivi la percentuale o molti programmi di installazione ti mostreranno la bella rotella.

Come funziona?

    
posta Enrichman 12.09.2015 - 11:02
fonte

2 risposte

3

Supponendo che si stia parlando di programmi di console e non di finestre di dialogo di avanzamento in una GUI, l'effetto di sovrascrivere l'ultima riga può essere ottenuto con STDOUT e con qualsiasi console.

La maggior parte delle console supporta il carattere "carriage return", che porta la posizione di output corrente all'inizio della riga corrente, senza alterare in altro modo ciò che viene visualizzato sulla console. Nella maggior parte dei linguaggi di programmazione, questo carattere è rappresentato dalla sequenza di escape \r .
Quando si produce un output con caratteri di ritorno a capo in esso, il testo dopo un ritorno a capo sovrascrive l'ultima riga che è stata scritta prima.

Se si reindirizza l'output di un programma come scp (che produce un'indicazione di avanzamento) a un file, in molti casi il file sarà simile a questo (utilizzando la sequenza di escape per il carattere di ritorno a capo) :

 10%\r
 20%\r
 30%\r
 40%\r
 50%\r
 60%\r
 70%\r
 80%\r
 90%\r
100%\r
\n
    
risposta data 12.09.2015 - 11:31
fonte
3

Utilizzano una libreria di gestione della console come ncurses o usano \b o \r sequenze di escape per farlo

Altre informazioni:

  1. link
  2. link
  3. link
risposta data 12.09.2015 - 11:28
fonte

Leggi altre domande sui tag