各位看官們,大家好,上一回中咱們說的是main函數參數的例子,這一回咱們說的例子是:獲取程序當前
的工作路徑。閒話休提,言歸正轉。讓我們一起talk C栗子吧!
我們在工作的時候,有時候需要獲取當前程序的工作路徑。看官們還記得咱們以前說過的Linux命令嗎?
在Linux命令中有一個叫作pwd的命令可以顯示當前的工作路徑。
下面我們做個演示:
打開終端,在當前工作路徑中輸入:pwd命令,然後敲下回車執行該命令,命令執行結果如下:
/home/talk8/CExample // 顯示當前工作目錄
不知道看官們發現沒有,我們是在終端中執行pwd命令得到了當前的工作目錄,如果要是在C語言程序中想
得到當前的工作目錄,有什麼辦法呢?
辦法肯定是有的,我們可以通過execlp()函數來實現。execlp函數通過調用終端來執行傳遞給它的命令。
具體的用法:execlp(cmd,cmd,params,char *p).
其中cmd表示可以在終端中執行的命令;params 為cmd的參數.p通常不使用,將其賦值為0就可以;該函數有返回值,如果遇到終端不支持的命令,它會返回-1,表示不能執行該命令或者命令執行失敗。
除了上面的方法外,Linux系統還為我們提供了專門的API:getcwd.通過它,我們可以獲取當前的工作
目錄。
具體的用法:getcwd(char *buf,int size).
其中buf用來存放獲取到的工作路徑;size表示buf的大小。
看官們,正文中就不寫代碼了,詳細的代碼放到了我的資源中,大家可以點擊這裡下載使用。
下面是程序的運行結果,請大家參考:
./s //在終端中運行程序 Current directory is :/home/talk8/CExample //通過API得到當前工作目錄 ./s pwd //在終端中運行程序,第二個參數是pwd,表示讓程序執行pwd命令 /home/talk8/CExample //通過execlp得到當前工作目錄 ./s a //在終端中運行程序,第二個參數是a,表示讓程序執行a命令 a: command not found. //不能執行a命令 ./s a a a //在終端中運行程序,第2,3,4個參數都是a,表示讓程序執行a命令 two many params //不能執行a命令
各位看官,關於獲取程序當前工作路徑的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解。