怪不得博客園乾不過別家,體驗真的不太好。通過openwrite發佈文章,其他平臺都能發佈,就博客園限制了,理由是文字少的文章限制發佈到該平臺。 哎,這種行為當真是扶不起的阿斗。以後也不要太把博客園當回事了,遲早要關門的 報錯信息如下: -- The C compiler identification ...
/proc的相關知識
/proc 介紹
/proc
是一種偽文件系統(也即虛擬文件系統),存儲的是當前內核運行狀態的一系列特殊文件,用戶可以通過這些文件查看有關係統硬體及當前正在運行進程的信息,甚至可以通過更改其中某些文件來改變內核的運行狀態。
簡單來講,/proc
目錄即保存在系統記憶體中的信息。
/proc
目錄中包含許多以數字命名的子目錄,這些數字表示系統當前正在運行進程的進程號(PID),裡面包含對應進程相關的多個信息文件。
/proc/self 介紹
/proc/self
表示當前進程目錄。前面說了通過/proc/$pid/
來獲取指定進程的信息。如果某個進程想要獲取當前進程的系統信息,就可以通過進程的pid來訪問/proc/$pid/
目錄。但是這個方法還需要獲取進程pid.為了更方便的獲取本進程的信息,linux提供了 /proc/self/
目錄,這個目錄比較獨特,不同的進程訪問該目錄時獲得的信息是不同的,內容等價於 /proc/本進程pid/
。進程可以通過訪問/proc/self/
目錄來獲取自己的系統信息,而不用每次都獲取pid。
如何利用
cmdline
獲取當前啟動進程的完整命令
cat /proc/self/cmdline
以上命令返回的結果,就是啟動當前進程的命令
cwd
cwd 文件是一個指向當前進程運行目錄的符號鏈接。可以通過查看cwd文件獲取目標指定進程環境的運行目錄
ls /proc/self/cwd
exe
獲取當前進程的可執行文件的完整路徑
ls -al /proc/self/exe
environ
獲取當前進程的環境變數信息
cat /proc/self/environ
maps
/proc/self/maps
的內容是當前進程的記憶體映射關係,可通過讀取該文件來得到記憶體數據映射的地址。
欄位值依次為:記憶體區域--許可權--文件在記憶體中的偏移量--設備號--文件索引節點--路徑
路徑中/usr/bin/cat
表示二進位文件
mem
/proc/self/mem
的內容是當前進程的記憶體映射關係,可通過讀取該文件來得到記憶體數據映射的地址。但是註意該文件不能直接讀取,因為文件中存在著一些無法讀取的未被映射區域。所以要結合/proc/self/maps
中的偏移地址進行讀取。通過參數start和end及偏移地址值讀取內容。