1. 程式人生 > >Linux應用程式設計4之proc檔案介紹

Linux應用程式設計4之proc檔案介紹

1.proc檔案系統介紹

1.1.作業系統級別的除錯

1)簡單程式單步除錯

2)複雜程式printf列印資訊除錯

3)框架體系日誌記錄資訊除錯

4)核心除錯的困境

1.2proc虛擬檔案系統的工作原理

1)linux核心是一個非常龐大、非常複雜的一個單獨的程式,對於這樣的一個程式來說除錯是非常複雜的。

2)像kernel這樣龐大的專案,給裡面新增/更改一個功能是非常麻煩的,因為你這新增的一個功能可能會影響其他已經有的。

3)早期核心版本中儘管除錯很麻煩,但是高手們還可以憑藉個人超凡脫俗的能力去駕馭。但是到了2.4左右的版本的時候,這個難度已經非常大了。

4)為了降低核心除錯和學習的難度,核心開發者們在核心中添加了一些屬性專門用於除錯核心,proc檔案系統就是一個嘗試。

5)proc檔案系統的思路是:在核心中構建一個虛擬檔案系統/proc,核心執行時將核心中一些關鍵的資料結構以檔案的方式呈現在/proc目錄中的一些特定檔案中,這樣相當於將不可見的核心中的資料結構以視覺化的方式呈現給核心的開發者。

6)proc檔案系統給了開發者一種除錯核心的方法:我們通過實時的觀察/proc/xxx檔案,來觀看核心中特定資料結構的值。在我們新增一個新功能的前後來對比,就可以知道這個新功能產生的影響對還是不對。

7)proc目錄下的檔案大小都是0,因為這些檔案本身並不存在於硬碟中,他也不是一個真實檔案,他只是一個介面,當我們去讀取這個檔案時,其實核心並不是去硬碟上找這個檔案,而是對映為核心內部一個數據結構被讀取並且格式化成字串返回給我們。所以儘管我們看到的還是一個檔案內容字串,和普通檔案一樣的;但是實際上我們知道這個內容是實時的從核心中資料結構來的,而不是硬碟中來的。

1.3常用proc中的檔案介紹

1)/proc/cmdline

2)/proc/cpuinfo

3)/proc/devices

4)/proc/interrupts

2.proc檔案系統的使用

2.1cat以手工檢視

2.2.程式中可以檔案IO訪問

2.3.在shell程式中用cat命令結合正則表示式來獲取並處理核心資訊

2.4.擴充套件:sys檔案系統

1)sys檔案系統本質上和proc檔案系統是一樣的,都是虛擬檔案系統,都在根目錄下有個目錄(一個是/proc目錄,另一個是/sys目錄),因此都不是硬碟中的檔案,都是核心中的資料結構的視覺化介面。

2)不同的是/proc中的檔案只能讀,但是/sys中的檔案可以讀寫。讀/sys中的檔案就是獲取核心中資料結構的值,而寫入/sys中的檔案就是設定核心中的資料結構的元素的值。

3)歷史上剛開始先有/proc檔案系統,人們希望通過這種技術來除錯核心。實際做出來後確實很有用,所以很多核心開發者都去核心調價程式碼向/proc目錄中寫檔案,而且剛開始的時候核心管理者對proc目錄的使用也沒有什麼經驗也沒什麼統一規劃,後來的結果就是proc裡面的東西又多又雜亂。

4)後來覺得proc中的內容太多太亂缺乏統一規劃,於是乎又添加了sys目錄。sys檔案系統一開始就做了很好的規劃和約定,所以後來使用sys目錄時有了規矩。

相關推薦

Linux應用程式設計4proc檔案介紹

1.proc檔案系統介紹 1.1.作業系統級別的除錯 1)簡單程式單步除錯 2)複雜程式printf列印資訊除錯 3)框架體系日誌記錄資訊除錯 4)核心除錯的困境 1.2.proc虛擬檔案系統的工作原理 1)linux核心是一個非常龐大、非常複雜的一個單獨的程式

嵌入式Linux應用程式設計I/O程序(上)

【1】i/o 本質就是輸入輸出函式,也是讀寫函式 【2】系統呼叫和庫函式 系統呼叫: 使用函式控制linux核心,linux核心來操作硬體 庫函式: 庫函式的本質還是系統呼叫,只不過需要在記憶體當中開闢一塊空間(緩衝區),從而減少系統呼叫的次數 【3】io分類

Linux學習日記 —— 4.1.2 檔案處理命令目錄處理命令

目錄處理命令 ————建立目錄———— 命令名稱:mkdir 命令英文原意:make directories 命令所在路徑:/bin/mkdir 執行許可權:所有使用者 語法:mkdir [-p] [目錄名] 功能: 建立新目錄(資料夾) -p

linux proc檔案介紹

先說一個剛剛發現的問題:前兩天開啟測試機發現速度非常慢,top一看,發現java佔用CPU 99%檢視對應pid,發現這個是新的話單採集程式gather:#ps -ef | grep javaRoot 5762 1 99 14:41 pts/0 00:00:01 java -

Linux學習筆記proc檔案使用篇

在proc 目錄下建立檔案,不得不提到的struct file_operations , 詳細struct 資訊,可以查閱—— [linux kernel] . 本篇主要討論的是以下幾個介面: open int (open) (struct

linux應用程式設計I/O程式設計

相關函式: 一、相關函式 1 fopen() 呼叫open開啟指定的檔案,返回 一個檔案描述符(int 型),分配一個file結構體,包括檔案描述符,I/O快取區,和當前讀寫位置等資訊。 2 fgetc() 通過傳入的資訊到I/O快取區讀取一個字元,如果能讀取成功則直接返回

Linux核心通訊---proc檔案系統(詳解)

使用 /proc 檔案系統來訪問 Linux 核心的內容,這個虛擬檔案系統在核心空間和用戶空間之間打開了一個通訊視窗: /proc 檔案系統是一個虛擬檔案系統,通過它可以使用一種新的方法在 Linux核心空間和使用者間之間進行通訊。在 /proc 檔案系統中,我

Linux應用開發自學

回來 高並發 做了 人員 marvel 匯編 物聯網 原理 書籍 前言 在 「關於我 」那篇博文裏,朋友們應該知道了我不是科班出身,是由機械強行轉行到Linux應用開發方向。下面我就詳細向大家介紹自己這一路上的轉行歷程,希望對大家有所啟發。 我是學機械專業的,對於機械專業我

Linux基礎(二)——/proc檔案系統

1、/proc檔案系統簡介     /proc檔案系統由一組目錄和檔案組成,裝配(mount)於/proc目錄下。/proc檔案系統是一種虛擬檔案系統,以檔案系統目錄和檔案形式提供一個只想核心資料結構的介面。這為檢視和改變各種系統屬性開啟了方便之門。此外,還能通過一組以/proc

嵌入式Linux應用程式設計—嵌入式Linux常識2

1.3平臺 我們通常所說的平臺包括硬體平臺和軟體平臺。 處理器和它的外圍電路組成在一起,就是所謂的硬體平臺。如一個ARM架構處理器和外圍電路組成的單板,我們稱為ARM平臺。 一個嵌入式系統是針對某個應用來開發的,因此不可能在搭建的ARM平臺上,再去開發針對這個ARM平臺的編譯軟體和工具等

嵌入式Linux應用程式設計—嵌入式linux常識1

嵌入式系統是針對某個應用,軟硬體可裁減的,對體積、功耗、成本等等有嚴格要求的一個計算機系統。看起來很複雜,其實就2點:1.嵌入式系統是一個計算機系統;2.嵌入式系統是針對某個應用的。 我們通常使用的電腦、筆記本,就是一個通用的計算機系統。通用的意思是沒有特定的用途、什麼都可以幹,如上網、打遊戲、

「 非著名技術人 」良許,Linux應用開發自學

小編導讀 良許,是小ken的一個好哥們,線下面基已確認過眼神,是個很靠譜的人。目前在廣州一家世界500強公司就職,是一名Linux應用開發工程師。良許在大學所學專業與IT毫不相干——專業是機械,無意間接觸到嵌入式,於是深深被程式設計工作所吸引,從0開始自學程式設計,一年後被世界500

linux應用程式設計--GCC程式編譯

GCC程式編譯 linux系統下的GCC(GNU C Compiler)是GNU推出的功能強大、效能優越的多平臺編譯器,是GNU的代表作之一。GCC可以在多種硬體平臺上編譯出可執行程式,其執行效率與一般的編譯器相比,平均效率要高20%~30%。 GCC編譯程式的四個階段 預處理(Pre-Proce

linux應用程式設計--GDB除錯

GDB簡介:GDB是GNU釋出的一款功能強大的程式除錯工具,GDB主要完成下面三個方面功能: 一、GDB的使用操作   1.啟動被除錯程式。   2.讓被除錯的程式在指定的位置停住。   3.當程式被停住時,可以檢查程式狀態(如變數值)。   GDB除錯例項:     1.在linux下編寫tes

linux安全模組學習LSM的介紹實現

相關背景介紹 近年來Linux系統由於其出色的效能和穩定性,開放原始碼特性帶來的靈活性和可擴充套件性,以及較低廉的成本,而受到計算機工業界的廣泛關注和應用。 但在安全性方面,Linux核心只提供了經典的UNIX自主訪問控制(root使用者,使用者ID,模式位安全機制),以及部分的支援了POS

Linux應用程式設計學習記錄(五)

        現在來學習一下關於程序的一些操作。 1.  使用fork()函式建立程序 A)函式一定是在程式中被呼叫的,而呼叫fork函式的程式在執行中是一個程序。在這個程序中,執行fork的效果,是把自己完完全全複製一遍。這個新的程序是原來程序的子程序,他倆構成了父子

Linux驅動程式設計中EXPORT_SYMBOL()介紹

一、檢視核心驅動程式碼你會發現很多的函式帶有EXPORT_SYMBOL()巨集定義。 二、那麼EXPORT_SYMBOL的作用是什麼? EXPORT_SYMBOL標籤內定義的函式或者符號對全部核心程式碼公開,不用修改核心程式碼就可以在您的核心模組中直接呼叫,即

4 Redis 配置檔案介紹 4-4 Redis 的常用配置

2016-12-22 14:28:39   該系列文章連結NoSQL 資料庫簡介Redis的安裝及及一些雜項基礎知識Redis 的常用五大資料型別(key,string,hash,list,set,zset)Redis 配置檔案介紹Redis 持久化之RDBRedis 持久化之AOFRedi

linux系統程式設計(二)--檔案操作

1.0    檔案描述符         每個程序啟動後會自動開啟三個檔案描述符 0、1、2             分別對應於巨集 STDIN_FIL

linux核心——建立自己的/proc檔案——processinfo

利用proc_mkdir()建立一個mydir,再利用create_proc_read_entry()函式建立一個processinfo檔案。我們從模組裡面獲取的資訊都將寫入到processinfo檔案中。 #include<linux/module.h> #i