在 Linux 中,在stdout
命令行中,我想更新特定区域,例如apt-get
输出:
54% [Waiting for headers] [Waiting for headers] 211 kB/s 3s
百分比、kB/s和second将每秒更新。
如果我们使用printf
然后我们将得到多行输出它们。我试过以下printf
:
printf("\e[1;1H\e[2J");
但它会清除所有输出。
我的问题是如何更新特定区域并保持其他区域稳定?
在 Linux 中,在stdout
命令行中,我想更新特定区域,例如apt-get
输出:
54% [Waiting for headers] [Waiting for headers] 211 kB/s 3s
百分比、kB/s和second将每秒更新。
如果我们使用printf
然后我们将得到多行输出它们。我试过以下printf
:
printf("\e[1;1H\e[2J");
但它会清除所有输出。
我的问题是如何更新特定区域并保持其他区域稳定?
使用回车。它会将光标移回行首,您可以从那里覆盖之前行中的内容。例如:
printf("Hello, world!\rX");
将显示为:
Xello, world!
stdout
如果您希望它可见,请确保经常冲洗:
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!