coreutils5.0 fold.c源碼分析

coreutils5.0 fold.c源碼分析
先說點閒話,感覺打開電腦,能靜下心來讀源碼,是一種幸福的生活。昨天把辦公桌上的衛生整理了一下,然後在win10的筆記本上安裝coreutils5.0,忽然發現編譯不了。編譯到seq.c時就報錯誤了。
我心想,還是把那些能編譯出來的代碼讀一下,我不想把時間花在調試環境上。於是就打開,發現win10下的ubuntu很不好讀代碼,那個註釋的字體太暗了。還是直接安裝ubuntu系統,在下面讀的代碼字體顏色就正常多了。或許,要搞一臺linux筆記本。
今天讀fold.c,我修改了,因爲編譯不了,於是就使用系統已經安裝好的程序,先測試下效果。
echo "1234567" | fold -w 3
123
456
7
昨天不會使用fold命令,還在網上找了文章,但沒有讀,有時,就是讀不進去。今天,直接打開源碼,先從頭翻到尾,發現有一個-w選項的處理有意思

在main程序中,當遇到選項-3時,變成
-w 3
再調用getopt解析-w參數,給全局變量width賦值。
再調用fold_file(fd,width)
接着分析fold_file函數。
我大體覺得,作者是這樣處理
while((c=getc(istream))!=EOF){
  判斷當前長度是否起過width
  如果沒有超過,繼續讀,
  如果超過,就折行。
}
不過,有些細節,還是搞不明白。
我想,還是留着以後,再慢慢看。
我留點尾巴,讓大腦慢慢發酵。
另外,在linux中,切換程序是用alt+esc鍵,學了一招。
 

發佈了225 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章