coreutils5 0 paste c原始碼分析

2021-10-01 12:43:26 字數 677 閱讀 5592

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 可是執行該命令時,系統究竟做了什麼?如果查...