在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 嵌入式Linux:proc文件系統(tǒng)

            嵌入式Linux:proc文件系統(tǒng)

            發(fā)布人:美男子玩編程 時間:2024-08-22 來源:工程師 發(fā)布文章

            proc 文件系統(tǒng)是一個虛擬文件系統(tǒng),它以文件系統(tǒng)的形式為應用層提供訪問系統(tǒng)內核數(shù)據(jù)的接口。用戶和應用程序可以通過 proc 文件系統(tǒng)獲取系統(tǒng)信息和進程相關信息,對 proc 文件系統(tǒng)的讀寫相當于與內核進行通信。然而,與普通文件不同,proc 文件系統(tǒng)是動態(tài)創(chuàng)建的,文件本身并不存在于磁盤中,只存在于內存中。因此,它被稱為虛擬文件系統(tǒng),類似于 devfs。

            proc 文件系統(tǒng)特點如下:

            • 動態(tài)創(chuàng)建proc 文件系統(tǒng)中的文件是動態(tài)生成的,實時反映系統(tǒng)和進程的狀態(tài)。

            • 內核信息訪問最初,proc 文件系統(tǒng)是為了提供有關系統(tǒng)中進程的信息,但由于其高效和便捷,很多內核信息也開始通過它進行報告或啟用動態(tài)運行時配置。

            • 可視化數(shù)據(jù)內核將運行時的一些關鍵數(shù)據(jù)以文件的形式呈現(xiàn)在 proc 文件系統(tǒng)的特定文件中,使得應用層可以以可視化方式訪問這些數(shù)據(jù)結構。

            proc 文件系統(tǒng)通常掛載在系統(tǒng)的 /proc 目錄下。對于內核開發(fā)者(如驅動開發(fā)工程師)來說,proc 文件系統(tǒng)提供了一種調試內核的方法:通過查看 /proc/xxx 文件,可以獲取內核特定數(shù)據(jù)結構的值,對比添加新功能前后的數(shù)據(jù)變化,從而判斷該功能的影響是否合理。

            在 /proc 目錄下包含了一些重要的目錄和虛擬文件如下所示:


            圖片


            在 /proc 目錄下,可以看到許多以數(shù)字命名的文件夾,例如 100038、2299、98560 等。這些數(shù)字對應的是各個進程的 PID(進程標識符)。每個進程在內核中都有一個唯一的編號,即 PID,用來區(qū)分不同的進程。這些以數(shù)字命名的文件夾中記錄了各個進程的相關信息。不同的信息通過不同的虛擬文件呈現(xiàn)。

            以下是對 /proc 目錄下各個文件和子目錄的詳細說明:

            進程相關信息

            • /proc/[pid]每個正在運行的進程都有一個對應的目錄,[pid] 是進程的 ID,包含了關于該進程的各種信息。

              • /proc/[pid]/cmdline啟動該進程的命令行參數(shù)。

              • /proc/[pid]/cwd指向進程當前的工作目錄的符號鏈接。

              • /proc/[pid]/environ進程的環(huán)境變量。

              • /proc/[pid]/exe指向進程的可執(zhí)行文件的符號鏈接。

              • /proc/[pid]/fd/包含指向進程打開的文件描述符的符號鏈接。

              • /proc/[pid]/stat進程的狀態(tài)信息,包含進程的詳細狀態(tài)。

              • /proc/[pid]/status進程的狀態(tài)信息,以更易讀的格式顯示。

            系統(tǒng)相關信息

            • /proc/cpuinfo關于 CPU 的詳細信息,包括每個 CPU 的型號、頻率、緩存大小等。

            • /proc/meminfo關于系統(tǒng)內存的詳細信息,包括總內存、可用內存、緩存大小等。

            • /proc/uptime系統(tǒng)啟動后的時間和空閑時間。

            • /proc/version內核版本信息,包括編譯者和編譯時間。

            • /proc/loadavg系統(tǒng)負載平均值,顯示最近 1、5、15 分鐘的系統(tǒng)平均負載。

            • /proc/filesystems內核支持的文件系統(tǒng)列表。

            • /proc/sys/內核參數(shù)的配置,通過該目錄可以調整和查看內核參數(shù)。

            其他有用的虛擬文件

            • /proc/cmdline內核啟動參數(shù)。

            • /proc/iomemIO 設備的內存使用情況。

            • /proc/interrupts顯示被占用的中斷號和占用者相關的信息。

            • /proc/ioportsIO 端口的使用情況。

            • /proc/kcore系統(tǒng)物理內存映像,不可讀取,一般用于內核調試。

            • /proc/loadavg系統(tǒng)平均負載。

            • /proc/meminfo物理內存和交換分區(qū)使用情況。

            • /proc/modules當前加載的內核模塊列表。

            • /proc/mounts當前掛載的文件系統(tǒng)列表。

            • /proc/partitions系統(tǒng)識別的分區(qū)表。

            • /proc/swaps交換分區(qū)的利用情況。

            • /proc/version內核版本信息。

            • /proc/uptime系統(tǒng)運行時間。

            1

            使用 cat 命令讀取 /proc 文件系統(tǒng)

            cat 命令是一個簡單且常用的方式來讀取 /proc 目錄下的虛擬文件。

            查看內核版本:


            cat /proc/version

            輸出類似于:


            Linux version 5.4.0-42-generic (buildd@lgw01-amd64-040) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020

            查看系統(tǒng)負載:


            cat /proc/loadavg

            輸出類似于:


            0.00 0.01 0.05 1/103 1234

            2

            在應用程序中使用open()和read()函數(shù)讀取/proc文件系統(tǒng)

            在編程中,可以使用標準的文件操作函數(shù)來讀取 /proc 文件系統(tǒng)中的內容。以下是一個簡單的 C 程序示例:


            #include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <unistd.h> #define BUFFER_SIZE 1024 void read_proc_file(const char *filepath) {    int fd = open(filepath, O_RDONLY);    if (fd == -1) {        perror("open");        exit(EXIT_FAILURE);    }     char buffer[BUFFER_SIZE];    ssize_t bytesRead;    while ((bytesRead = read(fd, buffer, sizeof(buffer) - 1)) > 0) {        buffer[bytesRead] = '';        printf("%s", buffer);    }     if (bytesRead == -1) {        perror("read");        close(fd);        exit(EXIT_FAILURE);    }     close(fd);} int main() {    read_proc_file("/proc/version");    return 0;}

            輸出類似于:


            Linux version 5.4.0-42-generic (buildd@lgw01-amd64-040) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020

            通過 cat 命令和編程接口,用戶和開發(fā)者可以方便地訪問和讀取 /proc 文件系統(tǒng)中的實時信息。這些信息對于系統(tǒng)監(jiān)控、調試和優(yōu)化非常有用。


            *博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



            關鍵詞: 嵌入式 Linux

            相關推薦

            技術專區(qū)

            關閉