-1
有人能給我詳細描述當你在linux中執行「ls」命令時會發生什麼。使用什麼系統調用?文件系統是做什麼的?顯然取決於使用哪個文件系統。有人可以提供有關此主題的深入討論,或者指出一些好的資源!謝謝!當你在Bash中執行「ls」時會發生什麼
有人能給我詳細描述當你在linux中執行「ls」命令時會發生什麼。使用什麼系統調用?文件系統是做什麼的?顯然取決於使用哪個文件系統。有人可以提供有關此主題的深入討論,或者指出一些好的資源!謝謝!當你在Bash中執行「ls」時會發生什麼
PWD
,如/富/酒吧和EXCUTE(在/ usr/bin中/ LS /富/條)ls='ls --color=auto'
/bin/ls
fork()
)新進程和執行它的代碼(exec()
)。進程環境從父進程繼承到新的「ls」進程。ldd /bin/ls
)strace
檢查,以及主要部分我認爲是openat()
和getdents()
第一次打開目錄,第二次讀取那裏的條目。wait()
信號和父進程bash完全終止它。
*「使用什麼系統調用?」* - 執行shell命令'strace ls'。 – sawdust
如果您想深入瞭解muche,請在現代x86上使用'perf',它會根據英特爾處理器追蹤技術向您顯示完整的命令跟蹤信息。 – 0andriy
爲什麼不檢查源代碼? https://opensource.apple.com/source/file_cmds/file_cmds-230/ls/ http://www.gnu.org/software/coreutils/coreutils.html – user3344003