進度條小程式
阿新 • • 發佈:2019-02-13
Linux下的進度條程式
1.回車和換行的區別:
回車用\r表示,換行用\n表示,回車表示回到當前行的開始地方,而不會到下一行,如果是要接著輸出的話,本行以前的內容會被逐一覆蓋掉。而換行指的是換到當前位置的下一行,而不會回到行首。
2. IO的三種緩衝機制:
我們可以看到進度條是通過printf函式實現的,沒有換行,只是在不斷地重新整理本行的輸出,所以在每一次的輸出後只需要回車而不需要換行。
根據馮諾依曼原理可知,輸入裝置與輸出裝置之間的聯絡必須通過儲存裝置,所以這裡就有緩衝機制的分類。IO有三種緩衝機制,分別是全緩衝,行緩衝和無緩衝。
a.全緩衝:指系統在填滿標準IO緩衝區之後才進行實際的IO操作。
b.行緩衝:標準IO在輸入和輸出中遇到換行符時執行操作,由此可知printf函式就是一個行緩衝函式 。
c.無緩衝:標準IO庫不對字元進行緩衝儲存。
3.進度條的原理
a.在此進度條程式中,“#”的出現是不斷遞增的,且沒有換行出現,所以需要的是回車符號;
b.而且每次在回車之前都需要我們手動重新整理“#”的出現,用到了fflush(stdout);c.為了可以直觀的看到進度條不斷遞增的情況,這裡用到了usleep函式,此函式是以微秒計算的;
d.為了顯示進度,在進度條的後邊加了0%-100%,通過用“|\-//”來顯示正在載入資料。