嵌入式 C语言实现进度条以及实现带进度条的CP命令等编程示例收集二

2019-07-12 19:37发布

1、脚本shell root@u12d32:/home/kongjun/work/hi_test/time_count_down# cat time_test.sh
#!/bin/bash
COUNTER=0
_R=0
_C=`tput cols`
_PROCEC=`tput cols`
tput cup $_C $_R
printf "["
while [ $COUNTER -lt 100 ]
do
COUNTER=`expr $COUNTER + 1`
sleep 0.1
printf "=>"
_R=`expr $_R + 1`
_C=`expr $_C + 1`
tput cup $_PROCEC 101
printf "]%d%%" $COUNTER
tput cup $_C $_R
done
printf " "
2、C编程 Linux下复制文件的命令cp非常强大,就是有一点不是很好:没有进度提示。尤其是在复制很多大文件时,控制台仅仅停在那里什么信息都没有让人非常不爽。
当然可以通过shell脚本实现进度提示,不过我喜欢直接一点的方式:用C程序解决。 1.遍历 想要知道进度首先要统计源文件的个数和大小,然后再复制,所以需要对源文件做两次遍历。当然也可以只遍历一遍,把遍历的结果保存在内存中这样后续操作就不用再遍历了,不过我认为这样做是没有必要的。 遍历函数 walk() 接受一个函数指针参数opp_func,walk()保证对源的每一项(可能是文件也可能是目录)调用一次opp_func. 这样可以通过设置不同的opp_func用同一个遍历函数完成不同的功能。后面的代码实现了3个opp_func分别是 统计函数 sum_up, 演示函数 demo, 和真正的执行函数  action.
2.进度信息显示 进度提示要在Linux的控制台的同一行覆盖刷新,否则就不美观了.这里需要用到一个小技巧:printf 输出控制台控制字符