在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");
但它会清除所有输出。
我的问题是如何更新特定区域并保持其他区域稳定?
答案 0 :(得分:7)
使用回车。它会将光标移回到行的开头,您可以从该行开始覆盖行中的内容。例如:
printf("Hello, world!\rX");
将显示为:
Xello, world!
如果您希望可见stdout
,请确保经常刷新fflush(stdout);
:
{{1}}
答案 1 :(得分:3)
另外(上面有用的\r
& fflush
advice),如果您想要全屏控制台输出,请考虑使用ncurses。如果您想要一个可编辑的输入行,GNU readline库也很有用!