当我在linux中使用apt-get安装程序时,我在控制台上看到了一些很棒的动画。安装进度消息动态更改而不是上升其历史记录。我想在我的程序中使用这个方法。如何编程?
答案 0 :(得分:1)
您使用ANSI escape codes。它们适用于所有POSIXy系统,也适用于旧的Unix系统。基本上除了Windows之外的所有地方,虽然旧的Windows确实有ANSI.SYS,并且基于一些快速的Google搜索,它可能在新的Windows 10(v1511)及更高版本中得到支持。
例如:
printf("\r\033[2KYour string");
fflush(stdout);
在上面,\r
将光标移回到行的开头。 \033[
是维基百科文章中称为 CSI 的两个字符(\033
是ASCII 27,或ESC;后跟[
)。 CSI 2 K 命令或\033[2K
清除整行;光标停留在原处(在行的开头)。然后你可以打印你的东西,但不包括将光标移动到下一行的\n
。
由于标准输出默认为行缓冲,因此需要fflush(stdout)
以确保数据实际输出到标准输出。
许多实用程序使用彩色输出,尤其是\033[0;31m[\033[1;31mFailed\033[0;31m]\033[0m
用于红色[Failed]
和\033[0;32m[\033[1;32mOk\033[0;32m]\033[0m
用于绿色[Ok]
。