四Linux之(缓冲区进度条升级Makefile)

Posted yumoz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四Linux之(缓冲区进度条升级Makefile)相关的知识,希望对你有一定的参考价值。

缓冲区

回车与换行

首先区分一下回车换行的含义:
基准图:
在这里插入图片描述
基准换行后
在这里插入图片描述
基准回车后
在这里插入图片描述
基准回车换行后
在这里插入图片描述

缓冲区

了解缓冲区之前,先执行下面代码,并分析。
在这里插入图片描述
出现上述的结果是因为刷新的策略不同导致的。左边执行的是行刷新,然而右边执行的是程序结束时刷新
刷新策略有:

  • 行刷新
  • 程序结束时刷新
  • 强制刷新
  • 文件关闭时刷新

关于强制刷新,一般使用fflush函数来实现。通过下面程序来学习强制刷新。

进度条

实现效果

在这里插入图片描述

注意事项

  1. 进度条的刷新方式采\\r,回车式;
  2. 采用强制刷新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

LinuxLinux项目自动化构建工具make makefile

Linux小练习进度条程序

Linux环境使用make与Makefile实现进度条

Linux下的第一步——进度条(gcc&Makefile)

linux 进度条的实现及makefile的简单应用