1. 程式人生 > >Linux實現進度條小程式

Linux實現進度條小程式

進度條:

進度條即計算機在處理任務時,實時的,以圖片形式顯示處理任務的速度,完成度等剩餘未完成任務量的大小,和可能需要處理時間,一般以長方形條狀顯示。日常生活中,下載,複製等等操作,我們都會見到進度條的身影。

     所以今天在cent os環境下的Linux實現一個簡單的進度條。

那麼工欲善其事必先利其器,我們先來了解一下幾點基礎知識。

       1.      我們想做一個怎麼樣的進度條?

我們做的進度條是一個方括號不動 方括號裡逐漸填充#的一個進度條

 那麼 我們就需要固定一個長度 向其中新增東西

我們就需要用到 printf(“[-100s%]”,buf);這裡的100是規定長度但是100是從右向左輸出 所以我們用到-100

       2.      進度條怎麼處理進度增加?

這裡 我們需要知道回車和換行的知識 回車和換行是不一樣的

回車指的是回到一行的首部

換行指的是換到下一行

那麼我們如果需要讓進度條逐漸增加 我們就僅僅只需要回車這一個功能

 在C語言裡回車是 /r

3.      進度條如何緩慢顯示?

毫無疑問 這裡需要用(秒為單位)sleep/usleep(微秒為單位)函式

但是 當我們先列印再用usleep時 我們發現它並沒有先列印 而是隔了一段時間後全部顯示

所以 我們還需要了解緩衝區

緩衝區分為無緩衝、行緩衝、全緩衝。

         無緩衝:表示的是沒有緩衝,可以將資訊立馬顯現出來,典型代表是標準錯誤流stderr。

          行緩衝:表示的是輸入輸出遇到換行才執行真正的I/O操作。典型的代表是鍵盤的操作。

          全緩衝:表示的是輸入輸出寫滿緩衝區才執行I/O操作。典型的代表是磁碟的讀寫。

根據馮諾依曼思想 cpu處理完放到記憶體中 記憶體之後才會輸出到輸出裝置上 所以我們需要重新整理stdout

printf是一個行緩衝函式,先寫到緩衝區,滿足條件後,才將緩衝區刷到對應檔案中,

刷緩衝區的條件如下:

    (1)緩衝區填滿;

    (2)寫入的字元中有‘\n’;

    (3)呼叫fflush手動重新整理緩衝區;

    (4)呼叫scanf要從緩衝區中讀取資料時,也會將緩衝區內的資料重新整理;

滿足上面4個條件之一緩衝區就會重新整理

所以我們應該用fflush函式重新整理緩衝區以便讓他立馬顯示到螢幕上


那麼 我們解決完這些問題 我們就開工 開始寫一個簡單的進度條小程式

那麼剩下的不贅述 

建loading.c 和 Makefile檔案


loading.c:


Makefile :


之後我們執行並檢視結果