四Linux之(缓冲区进度条升级Makefile)
Posted yumoz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四Linux之(缓冲区进度条升级Makefile)相关的知识,希望对你有一定的参考价值。
缓冲区
回车与换行
首先区分一下回车和换行的含义:
基准图:
基准换行后:
基准回车后:
基准回车换行后:
缓冲区
了解缓冲区之前,先执行下面代码,并分析。
出现上述的结果是因为刷新的策略不同导致的。左边执行的是行刷新,然而右边执行的是程序结束时刷新。
刷新策略有:
- 行刷新
- 程序结束时刷新
- 强制刷新
- 文件关闭时刷新
关于强制刷新,一般使用fflush函数来实现。通过下面程序来学习强制刷新。
进度条
实现效果
注意事项
- 进度条的刷新方式采\\r,回车式;
- 采用强制刷新fflush(stdout),强制刷新标准输出
代码
proc.h
#pragma once
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#define NUM 101
extern void proc();
proc.c
#include"proc.h"
void proc()
{
int i=0;
char buf[NUM]= {0};
const char* lable="|/-\\\\";
while(i<100)
{
fflush(stdout);
buf[i++]='=';
usleep(3000000);
printf("[%-101s][%3d%%][%c]\\r",buf,i,lable[i%4]);
}
printf("\\n");
}
main.c
#include"proc.h"
int main()
{
proc();
return 0;
}
Makefile:(升级版Makefile写法)
cc=gcc # 变量定义式的makefile
bin=proc
my_file=main.o proc.o
$(bin):$(my_file)
$(cc) -o $@ $^
%.o:%.c
$(cc) -c $<
.PHONY:clean
clean:
rm -rf $(bin) $(my_file)
以上是关于四Linux之(缓冲区进度条升级Makefile)的主要内容,如果未能解决你的问题,请参考以下文章
LinuxLinux下的自动化构建工具——make/makefile