程序在哪個路徑下被執行起來哪個路徑就是程序的工作目錄(current woring directory, cwd)。
這個概念就是這麼簡單。
比如,你在/home/mac下啟動乙個程序,那麼該程序的工作目錄就是/home/mac;如果你在/home/mac/bin下啟動同乙個程式,那麼該程序的工作目錄就變為/home/mac/bin。
比如程序的工作目錄是/home/mac,那麼當建立乙個叫做a.txt的檔案時其實建立的是/home/mac/a.txt這個檔案。
也就是說其實我們可以簡單的提供給程序乙個相對路徑,這個相對路徑相對於誰呢,答案就是程序的工作路徑。
遇到過這樣乙個問題,在用其它庫讀取乙個配置檔案時總是載入失敗,該檔案通過相對路徑讀取的,由於庫也沒有列印出錯誤日誌所以很難直接排查原因。仔細分析才發現原來該程序不是在配置檔案所在的路徑下被啟動的,導致程序找不到配置檔案所以載入出錯。
如何檢視程序的工作路徑
有已下幾種方法方便檢視。
使用pwdx命令,這是最簡單的方法,提供程序號,該命令就可以返回程序的工作目錄。比如有乙個程序號是17681的程序,使用命令,
$ pwdx 17681
/home/mac/bin
可以看到該程序的工作目錄是/home/mac/bin。
使用/proc/這個重量級工具,在/proc/目錄下有乙個叫做cwd的軟連線,通過檢視這個原鏈結就可以知道程序的工作路徑了。使用如下命令,
$ ll /proc/17681/cwd
lrwxrwxrwx 1 mac mac 0 oct 10 04:30 /proc/17681/cwd -> /home/mac/bin
可以看到,該程序的工作目錄和方法一得到的路徑是一致的。
使用pwdx 和ll /proc//cwd可以很方便的檢視程序的工作路徑。
程序的工作目錄
1.程序的工作目錄 include int chdir char pathname chdir.c include include include include include int main void printf change dir successfully n 輸出提示資訊 if fd ...
改變程序的工作目錄
先來說說 工作目錄 的概念吧。在程式中所有以檔名引用的檔案路徑都將被解釋為當前工作目錄 檔名。比如 fd open tmp test.txt o rdonly 其實shell直譯器解釋的每乙個命令本質上都是乙個程式,基本都存放在 bin目錄下,但是沒有cd這個程式。改變程序的工作目錄函式如下 inc...
linux 檢視程序所在目錄
一下內容 通過 ps 及 top 命令檢視程序資訊時,只能查到 相對路徑,查不到的程序的詳細資訊,如 絕對路徑 等。這時,我們需要通過以下的方法來檢視程序的詳細資訊 linux 在啟動乙個程序時,系統會在 proc 下建立乙個以 pid 命名的資料夾,在該資料夾下會有我們的程序的資訊,其中包括乙個名...