C
系統程式:如何收集資訊?
根據這個問題,學習系統程式的一個好方法是實現現有的工具。我決定嘗試重寫
ls
和ps
.我的問題是如何著手獲取此類文件?
- 我在哪裡可以找到查詢核心、文件系統等所需的系統呼叫 API …
- 我想也許我可以看看 GNU 工具的原始碼。我在哪裡可以找到它?
- 你們是否有任何(希望可以免費線上獲得)好的文件來推薦從哪裡開始?
您可以使用Glibc 手冊作為參考。它不適合絕對的初學者,但如果你相當流利地使用 C,你應該能夠閱讀一個部分並編寫一個工作程序。
您可以在GNU 網站上找到 GNU 工具的來源;獲取它的最簡單方法是獲取 Linux 發行版上的源包(例如
apt-get source coreutils
,如果您的發行版使用 Debian 打包實用程序)。我建議從BusyBox而不是 GNU 工具開始。BusyBox 是一組用於嵌入式 Linux 系統的實用程序;它比 GNU 實用程序更小更簡單。您可以執行
strace ls
以查看正在執行的系統呼叫ls
。請注意,當您編寫程序時,您不會直接呼叫系統呼叫,而是呼叫 C 庫中進行系統呼叫的函式。對於諸如文件操作之類的事情,C 庫函式類似於open
並且read
非常接近系統呼叫。對於學習,一本書(紙上)通常是有幫助的。UNIX® 環境中的高級程式( APUE ) 是經典之作。如果你明白了,請確保獲得第二版,因為第一版已經過時了。這本書是參考書,但其他書可能更適合初學者;貨比三家。