10

在 Linux 中,在stdout命令行中,我想更新特定区域,例如apt-get输出:

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

百分比kB/ssecond将每秒更新。

如果我们使用printf然后我们将得到多行输出它们。我试过以下printf

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

但它会清除所有输出。

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

4

2 回答 2

9

使用回车。它会将光标移回行首,您可以从那里覆盖之前行中的内容。例如:

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

将显示为:

Xello, world!

stdout如果您希望它可见,请确保经常冲洗:

fflush(stdout);
于 2013-03-30T02:09:28.447 回答
3

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!

于 2013-03-30T06:53:04.203 回答