1. 程式人生 > >coreutils-4.5.1 expr.c 原始碼閱讀

coreutils-4.5.1 expr.c 原始碼閱讀

在linux下試試五筆是否好用。感覺打字也還很快的。
很久沒有上csdn了,最近沒有看原始碼了,回顧自己,感覺還是寫程式碼太少,應該多寫,多讀。想來想去,感覺還是要看coreutils的程式碼,因為這些程式碼都簡單,那些作業系統,編譯器的程式碼量太大了,就算sed,awk,ruby早版本的程式碼量都太大,自己功力不夠,所以還是回到這些小的程式碼。
這幾天,先學《unix程式設計環境》那人的做法,先把按程式行數排序的程式指令碼化。
echo "list *.c | xargs wc -l | sort -n | more" > listc
再在listc中新增一行:
#!/bin/sh
然後加可執行許可權
chmod +x listc
再把這個程式挪到bin下。
sudo mv listc /usr/bin/
以後,當想到按行數查時,就
./listc
這是一個技巧。以前懶得做,現在發覺還是要向牛人學習。

這幾天,打造了站立式辦公環境,站累了就坐,所以選了一個70Cm高的板凳放在屁股後,站累了就坐下。

把程式碼先瀏覽,今天重點分析了expr.c。這個程式也較長,後來,發現先看下用法:
./expr --help
其實,也可以把expr看成一個小型的計算機器,本來是要有語法樹的,但作者省掉了。弄出
eval
eval1
eval2
eval3
eval4
等一些子程式,開始不知用途,後來才曉得其實現了操作符的優先順序。連滾帶pa的往下看,用一上午,基本讀完。
接著又看sort.c,這個程式我想先知道他用的是什麼排序方法,可看來看去,我發現我學會的是內部排序,而作者可能用到了外部排序方法,而《資料結構》中外部排序方法,沒看懂。
接著看tr.c,同樣,看不懂。
看tail.c,同樣,看不懂。
發現還是要看1000行內的程式碼,量少些,基本也好看一些。
開啟fmt.c,同樣看不懂,首先這個命令都不會使用,先要學會使用,學會使用命令後,再有針對性的去讀程式碼,這是較快的。
網上找程式碼分析,找不到coreutils相關的。我還是沉下心來讀程式碼吧。
好在,現在可以自己在src中修改程式碼,修改完後
sudo make
再執行本地檔案,能看到修改後的效果,真是很爽。