??通過strace工具可跟蹤用戶行程與Linux內核的呼叫互動,可看到其中的System Call(系統呼叫)情況;
安裝strace: apt-get instsall strace
??strace安裝完成后執行:strace ls /data即可看到ls命令執行時所執行的系統呼叫情況,如下圖所示:

??程式執行后輸出很多資訊,有看到反復執行:openat與stat系統呼叫,但很多貌似和我們這次關心的沒多大關系,過濾掉無關緊要的,
??找到如下資訊:
stat("/data", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/data", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getdents64(3, /* 6 entries */, 32768) = 168
getdents64(3, /* 0 entries */, 32768) = 0
close(3)
write(1, "apache-flume-1.8.0 code deepin"..., 44apache-flume-1.8.0 code deepin-wine soft
) = 44
??從著當中我們可以看到這么幾個系統呼叫:stat、openat、fstat、getdents64、close;
??此時可通過網路或系統的man指令了解著幾個系統呼叫的具體作用;
stat:為獲取檔案狀態系統呼叫
openat:將打開目錄/data獲取它的檔案描述符,回傳值3即為檔案描述符;
fstat:獲取檔案描述符為3的檔案狀態
getdents64:獲取檔案描述符為3的目錄項
close:關閉檔案描述符3
write:在獲取到檔案目錄資訊后將引數2中的資訊標準輸出到控制臺
??通過上面的跟蹤可看到此次ls命令執行程序中所發生的系統呼叫情況;通過使用這幾個系統呼叫我們也可開發出類似ls的工具,下篇文章將介紹下圖所示工具的開發;
使用Go所開發的工具

文章首發地址:https://mp.weixin.qq.com/s/kWbtd1ThNdPIVBCcEDt3fg
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/297721.html
標籤:其他
上一篇:四十九、MySQL資料庫尾聲
