http://blog.sina.com.cn/s/blog_54f82cc201010oow.html Linux系統(tǒng)是如何區(qū)分普通文件與設備驅(qū)動文件的研究一 文件的打開 一般來說對于文件或者是設備的操作都是從open開始的,我們首先要打開這個設備節(jié)點或者是普通文件,才可以對這個文件進行read、write、ioctl、mmap等操作。所以一切的起源于open。我們首先從open開始研究。 在linux系統(tǒng)進程當中,分為內(nèi)核空間和用戶空間。當我們在用戶空間通過open之后,會產(chǎn)生一個軟中斷,然后通過系統(tǒng)調(diào)用陷入內(nèi)核空間。通過系統(tǒng)調(diào)用號,我們可以跳轉(zhuǎn)到該中斷例程的入口地址,我們接著看內(nèi)核源碼的實現(xiàn)。 1、在arch/x86/include/asm/unistd_32.h中定義了系統(tǒng)調(diào)用號 open 函數(shù)用于打開和創(chuàng)建文件。以下是 open 函數(shù)的簡單描述 對于 open 函數(shù)來說,第三個參數(shù)(...)僅當創(chuàng)建新文件時才使用,用于指定文件的訪問權限位(access permission bits)。pathname 是待打開/創(chuàng)建文件的路徑名(如 C:/cpp/a.cpp);oflag 用于指定文件的打開/創(chuàng)建模式,這個參數(shù)可由以下常量(定義于 fcntl.h)通過邏輯或構成。 O_RDONLY O_APPEND 以下三個常量同樣是選用的,它們用于同步輸入輸出 O_DSYNC open 返回的文件描述符一定是最小的未被使用的描述符。 what is the difference between |
|
來自: raymoon_sure > 《linux》