如何更新命令行输出?

时间:2013-03-30 02:07:32

标签: c linux command-line

在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");

但它会清除所有输出。

我的问题是如何更新特定区域并保持其他区域稳定?

2 个答案:

答案 0 :(得分:7)

使用回车。它会将光标移回到行的开头,您可以从该行开始覆盖行中的内容。例如:

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

将显示为:

Xello, world!

如果您希望可见stdout,请确保经常刷新fflush(stdout);

{{1}}

答案 1 :(得分:3)

另外(上面有用的\r& fflush advice),如果您想要全屏控制台输出,请考虑使用ncurses。如果您想要一个可编辑的输入行,GNU readline库也很有用!