简体   繁体   中英

How to update command line output?

In Linux, While stdout to command line, I want to update specific area, such as the apt-get output:

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

the percentage , kB/s and second will update each second.

If we use printf then we will get multiple lines output them. I have tried following printf :

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

But it cleans all the output.

My question is how to update specific area and keep others stable?

Use the carriage return. It will move the cursor back to the start of the line, from which you can overwrite what was in the line before. For example:

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

Will be visible as:

Xello, world!

Make sure you flush stdout often if you want it to be visible:

fflush(stdout);

In addition (of the useful \\r & fflush advice above), if you want a full screen console output, consider using ncurses . If you want an editable input line, the GNU readline library is useful too!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM