coreutils5.0 paste.c原始碼分析
時間過得真快,一晃又到中餐時間了。我要趕緊再寫一篇。
先說paste的用法。
paste -s
把每個檔案變成一行,再把兩個檔案合在一起。
paste -s -d: a1 a2
此時,a1中每一行末尾的\n用:來進行分隔。
然後再看相應功能在程式中是如何實現的。
先翻到main函式。
serial_merge=0
在getopt_long中,當分析到-s時
serial_merge++
因此,呼叫paste_serial函式。
再分析paste_serial函式。
大體邏輯是:
對要合併的檔案進行迴圈
先開啟當前檔案
從當前檔案中讀入乙個字元到charold
如果charold!=eof
while((charnew=getc(fp))!=eof)
把當前開啟檔案關掉
----------------
我對第這一句有些不解,猜想,也許是要把檔案末尾的回車不用-d後的:替換吧。
好讀書,不求甚解。我讀**也一樣,好讀**,不求一步精確理解。慢慢來吧。先根據熟悉的用法,去在**中找出實現邏輯。把大的邏輯理解了,再看如何一步一步出來的。
就這樣。
coreutils5 0 split c原始碼分析
coreutils5.0 split.c原始碼分析 接著開啟split.c,先測試一下用法。a.3的內容如下12 345.split l 3 a.3 xaa123 xab4 5看來,按行拆分好理解的。於是,我就找按行拆分的 方法。先從頭到尾逛一下,翻到main時,先從getopt分析命令列引數中,找...
coreutils5 0 echo c原始碼分析
coreutils5.0 echo.c原始碼分析 隨便翻翻,因為前幾天學習了sort的用法,想讀讀sort.c的 一開啟,完全看不懂,因為資料結構中,內部排序我懂了,但外部排序我不懂,看樣子,作者好像是用到了外部排序。於是果斷的略過。然後再找 少的來讀,開啟 echo.c的 是簡單的,如果沒有引數就...
coreutils 5 0中幾個命令的執行過程
uname是怎麼執行的?隨手在鍵盤敲擊乙個uname a,系統資訊就出來了 linux my 2.6.8 2 686 smp 1 smp tue aug 16 12 08 30 utc 2005 i686 unknown unknown gnu linux 可是執行該命令時,系統究竟做了什麼?如果查...