Linux下進度條的簡單實現

linux下進度條的原理:
1、Linux下的回車換行
換行:不換行,光標到下一行當前位置
回車:光標移動到當前行行首
\n:Linux下的回車換行,發現\n後將包含\n的所有內容輸出到緩衝區
\r:只回車不換行,到當前行的行首
2、fflush()函數
在printf()後使用fflush(stdout)的作用是立刻將要輸出的內容輸出。
當使用printf()函數後,系統將內容存入輸出緩衝區,等到時間片輪轉到系統的輸出程序時(如果此時進程休眠,將無法看到輸出),將其輸出。
使用fflush(stdout)後,立刻清空輸出緩衝區,並把緩衝區內容輸出。

首先,建立一個makefile目錄,touch一個proc_bar.c文件,代碼如下:

#include<stdio.h>
#include<string.h>
int main()
{
    int i=0;
    char bar[102];
    bar[0]='\0';
    const char* lable="-\\|/";
    while(i<=100)
    {
        printf("[%-100s][%d%%][%c]\r",bar,i,lable[i%4]);
        bar[i]='#';
        i++;
        bar[i]='\0';
        fflush(stdout);
        usleep(100000);
    }
    return 0;
}

makefile下編寫Makefile文件

mytest:proc_bar.c
    gcc proc_bar.c -o mytest
.PHONY:clean
clean:
    rm proc_bar.c proc_bar.o proc_bar.i proc_bar.s

運行mytest結果:

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章