1. 程式人生 > >Linux學習筆記之proc檔案使用篇

Linux學習筆記之proc檔案使用篇

在proc 目錄下建立檔案,不得不提到的struct file_operations , 詳細struct 資訊,可以查閱—— [linux kernel] .

本篇主要討論的是以下幾個介面:
這裡寫圖片描述

open

int (open) (struct inode , struct file *); //開啟
這裡寫圖片描述

實現test_proc_show function,這樣可以在shell 下輸入cat /proc/test返回help 資訊、或者顯示你希望提供的資訊。
test_proc_show 函式:

static int test_proc_show(struct seq_file *m, void *v);

write

read/write 功能類似,write 相對較為複雜,這裡主要介紹下write。

static ssize_t test_proc_write(stuct file *file, const char *buf, size_t count, loff_t *f_ops);

write 使用有兩種方法:

  1. shell 下輸入echo X X > /proc/test
  2. 使用linux 提供的write介面。

第一個方法比較簡單,就不說了。主要說下第二個例子:

/* open file */
char * file = "/proc/test"
; int fd = 0; fd = open(file, O_RDWR); if (fd == -1) { prerror("open fail\n"); return NULL; }

關於test_proc_write的功能編寫,與正常的function沒有區別,主要注意返回值:

  1. 如果正常執行,請返回count;如果無法用sscanf拿到預期的值,請再使用sscanf拿一次字串,如果返回值非0,請返回count;如果返回值為0,請返回異常值。關於sscanf 請參考—— [Linux學習筆記之sscanf] .
  2. 如果異常執行,請返回異常值。

建立proc下檔案

說了這麼多,可能還不知道如何在proc 下建立一個file 呢?其實比較簡單, 核心的function就是:

static inline struct proc_dir_entry *proc_create(
    const char *name, umode_t mode, struct proc_dir_entry *parent,
    const struct file_operations *proc_fops);

示例:
這裡寫圖片描述

如果返回非空,則表示file 建立成功,當然在建立的時候需要制定檔名(name), 操作許可權(mode),parent可以填NULL,proc_fops就是上文提到的file_operations.

proc_create 一般是放在init函式裡面,init 函式在linux kernel 裡面有兩種方法:

  1. 提供一個init 函式,由相關module init 的時候呼叫;
  2. 提供module init / module exit 函式入口,由kernel 載入或者手動inmod
    moudle_init(void )/module_exit(void )

相關推薦

Linux學習筆記proc檔案使用

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

Linux學習筆記1——檔案和目錄管理(硬連線和軟連線)(連結檔,相當於快捷方式)

在這節將要學習linux的連線檔,在之前用"ls -l" 檢視檔案屬性的命令時, 其中第二個屬性是連線數。那麼這個連線數是幹什麼的?這就要理解inode。     先說一下檔案是怎麼儲存的。檔案儲存在硬碟上,硬碟的最小儲存單位叫做"扇區"(Sector),每個扇區儲存512位元

Linux學習筆記smb檔案共享

SMB檔案共享服務:SMB協議是建立在NetBIOS協議之上的應用協議,是基於TCP138、139兩個埠的服務,NetBIOS出現之後,Microsoft就使用NetBIOS實現了一個網路檔案/列印服務系統。這個系統基於NetBIOS設定了一套檔案共享協議,Microsoft稱之為SMB(Server Mes

Linux學習筆記Linux下查詢檔案的md5,sha1值

眾所周知,md5,sha1作為一種演算法被廣泛採用,尤其是在驗證一些軟體時尤為重要。       在Linux上,md5sum和sha1sum是校驗檔案的重要工具,其使用方式總結如下: 一:驗證md5值     

Linux學習筆記——使用者、使用者組、檔案屬性許可權、目錄概念

Linux學習筆記之——使用者、使用者組、檔案許可權、目錄概念 摘要:對一些很重要的概念和目錄進行說明、後面筆記中的練習就不再贅述這些概念以及他們之間的關係了。很重要! 一:使用者與使用者組         Linux是一個多使用者作業系統,那麼如何保證安全性和隱私性

Linux指令碼攻略學習筆記臨時檔案命名與隨機數

最適合儲存臨時資料的位置是 /tmp(該目錄中的內容在系統重啟後會被清空) mktemp 命令的用法非常簡單。它生成一個臨時檔案並返回其檔名(如果建立的是目錄,則返回目錄名)。如果提供了定製模板, X

Linux學習筆記八】檔案檔案系統的壓縮,打包與備份

8.2Linux系統常見的壓縮指令   在 Linux 的環境中,壓縮檔案案的副檔名大多是: 『.tar, .tar.gz, .tgz, .gz, .Z, .bz2, *.xz』,為什麼會有這樣的副檔名呢?   這是因為 Linux 支援的壓縮指令非常多,且

Linux學習筆記管道、重定向與正則表達式

linux管道與重定向 linux學習筆記 linux 正則表達式 管道:前一個命令的輸出,作為後一個命令的輸入命令1 | 命令2 | 命令3| 命令4 #tee 即在顯示器顯示,又在文件在保存文件例#echo “hello ,word” | tee /tmp/ hello.out例#wc -l

Linux學習筆記vim編輯技巧

vim linux學習筆記 linux vim編輯技巧 vim,一個純文本(純文本信息,ASCII text)編輯器,Vi(Visual Interface) IMproved,是一個模式化的編輯器。> vim有自帶的教程,也是linux的一個內置命令一、基本模式分類1 編輯模式(命令模式)

Linux學習筆記四————Linux常用命令 ( 待補充)

-h http “.” 現實 人性化 快捷 我們 包括 無法 一、Linux命令——文件、磁盤管理 1.文件管理 <1>查看文件信息:ls ls是英文單詞list的簡寫,其功能為列出目錄的內容,是用戶最常用的命令之一,它類似於DOS下的dir命令。 Linu

Linux學習筆記二————Linux系統的文件和目錄

管道 過程 命令 合成 給定 cal 如圖所示 項目 img 一、Windows和Linux文件系統區別 1、在 windows 平臺下,打開“計算機”,我們看到的是一個個的驅動器盤符: 每個驅動器都有自己的根目錄結構,這樣形成了多個樹並列的情形,如圖所示:

Linux學習筆記三————Linux命令概述

上下 eight ive 幫助 option pos misc tor tro 一、引言 很多人可能在電視或電影中看到過類似的場景,黑客面對一個黑色的屏幕,上面飄著密密麻麻的字符,梆梆一頓敲,就完成了竊取資料的任務。 Linux 剛出世時沒有什麽圖形界面,所有的操

Linux學習筆記九————ubuntu軟件安裝與卸載

升級 獲取 tor mage 技術 png bsp and rem 一、更新 源 1. 尋找國內鏡像源 所謂的鏡像源:可以理解為提供下載軟件的地方,比如Android手機上可以下載軟件的91手機助手;iOS手機上可以下載軟件的AppStore 2. 備份Ubuntu

Linux學習筆記十————Linux常用服務器構建ftp服務器

download pytho ftp服務 nsf png tp服務器 圖片 拷貝文件 span 一、ftp服務器介紹 FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。 用於Internet上的控制文件的雙向傳輸。

linux 學習筆記

幫助 bsp line 所有 默認 bin span mina eight 1 shell CLI(command line interface) GNIME Terminal Ctrl+Alt+T 快速打開Terminal F11 在全屏和普通模式下切換 默認shell

Linux 學習筆記四 查看文件

lin 學習 文件內容 筆記 文件 內容 上下 post blog 一 cat cat filename 查看文件內容 cat -n filename 查看文件內容,帶上行號 cat -b filename 查看文件內容 ,空行不帶行號 二 more more file

Linux學習筆記搭建LNMP服務器環境

linux mysql php nginx contos LNMP(linux+nginx+mysql+php)服務器環境配置作為新手,肯定是需要linux+nginx+mysql+php這套環境來實驗一些東西的,但是網上的教程亂七八糟的,今天我就來分享一個不錯的快速集成環境安裝包吧系統要

Linux學習筆記基礎命令與獲取幫助文檔

內容 大寫 用戶 協議 當前時間 switch 使用 主機 當前 一、linux的基本原則:1、 由目的單一的小程序組成,組合小程序,完成復雜任務;2、 一切皆文件;3、 盡量避免捕獲用戶接口;4、 配置文件保存為純文本格式二、shellGUI :Graphic U

Linux學習筆記文件系統

type 個人 入口 鼠標 動態鏈接庫 資源 功能 系統文件 學習筆記 文件系統→rootfs:根文件系統FHS(Filesystem Hierarchy Standard):文件系統層次化標準一、/boot:系統啟動相關文件,如內核,initrd,以及grub(bootl

Linux學習筆記bash

識別 命令替換 管理 proc del man -m histsize 單詞 一、shell(外殼)→離用戶最近的計算機程序,提供人機交互的功能廣義的shell:GUI(Graphical User Interface) CLI(Command Line Interfa