通過getcwd()可以擷取目前工作目錄。
成功調用傳回指向cwdbuf的指針,失敗傳回NULL。
getcwd()的實作是《Linux/Unix系統程式設計手冊》的練習18.5,題目如下:
實作一個功能與getcwd()相當的函數。提示:要擷取目前工作目錄的名稱,可調用opendir()和readdir()來周遊其父目錄(..)中的各個條目,查找其中與目前工作目錄具有相同i-node編号及裝置号的一項。如此這般,沿着目錄樹層層拾級而上(chdir(..))并進行掃描,就能建構出完整的目錄路徑。目前目錄與目前工作目錄相同時,就結束周遊。無論調用該函數成功與否,都應将調用者遣回其起始目錄(使用open()和fchdir()能友善地實作這一功能)
1、通過stat擷取檔案資訊,根據檔案資訊中的i-node編号和裝置号來找到正确的目錄
2、運用opendir()、readdir()來擷取目錄的資訊,目錄不能通過read()來擷取資訊。
PS:tlpi_hdr.h頭檔案為《Linux/Unix系統程式設計手冊》的頭檔案,可以去作者的網站下載下傳,其中的errExit()為錯誤處理函數。。。。
測試結果:
吐槽&收獲:本來打算慢慢通過寫學習記錄,但是覺得學習很多隻是通過把一些重點寫出來和一些習題,是以打算放一放,有空再寫。重點什麼的還要慢慢總結。先把一些習題做了,順便結合之前學得系統調用和庫函數做一些實際的東西先。。。。。。一個下午做這麼一條題。。。真心弱菜,不過做出來真得很開心。。。。。還有慢慢長路要走!!!繼續努力!!!