Linux终端显示下载进度

少于 1 分钟读完

在Linux的终端下更新、下载、安装工具时,会有一个类似68%这样动态变化的进度值,这是如何做到的呢

我首先想到了清屏

Turbo中可以使用clrscr(),头文件canio.h

Dev-C++中可以使用windows.h中的system(“cls”);

但是终端那么多内容,不可能全部删除,再重新输出吧,效率特别低不说,执行一次cls,会将终端所有的内容清除,根本不可能再重新输出。

linux下的clear命令,是将能看到的这一“页”屏幕翻过去,你还可以通过滚动条查看历史记录。

所以我们看到的那些更新或下载进度的实现不可能是上面这种方法。

在网上查了查,原来只用一条简单的语句就可以实现,而且还是C语言最简单的函数,准确的说是一个字符”\r”

printf(“\r”);

在printf()第一个参数最后加上”\r”字符,下一次的输出就会覆盖这一行。

更新示例

#include<stdio.h>
#include<windows.h>
int main()
{
	int i;
	printf("downloading SwordGame from onestraw.net...\n");
	for(i=0; i<=100; i++)
	{
		printf("finish %d%%...\r",i);
		Sleep(100);
	}
	printf("\ndone\n");
	return 0;
}

留下评论