ARM Linux開發 Linux open函式

2021-08-07 11:47:12 字數 2008 閱讀 1534

linux open函式

open 函式用於開啟和建立檔案。以下是 open 函式的簡單描述

#include int open(const

char *pathname, int oflag, ... );

返回值:成功則返回檔案描述符,否則返回 -1

對於 open 函式來說,第三個引數(...)僅當建立新檔案時才使用,用於指定檔案的訪問許可權位(access permission bits)。pathname 是待開啟/建立檔案的路徑名(如 c:/cpp/a.cpp);oflag 用於指定檔案的開啟/建立模式,這個引數可由以下常量(定義於 fcntl.h)通過邏輯或構成。

o_rdonly  唯讀模式

o_wronly  只寫模式

o_rdwr  讀寫模式

開啟/建立檔案時,至少得使用上述三個常量中的乙個。以下常量是選用的:

o_creat  如果指定檔案不存在,則建立這個檔案

o_excl  如果要建立的檔案已存在,則返回 -1,並且修改 errno 的值

o_trunc  如果檔案存在,並且以只寫/讀寫方式開啟,則清空檔案全部內容

o_noctty  如果路徑名指向終端裝置,不要把這個裝置用作控制終端。

o_nonblock  如果路徑名指向 fifo/塊檔案/字元檔案,則把檔案的開啟和後繼 i/o設定為非阻塞模式(nonblocking mode)

以下三個常量同樣是選用的,它們用於同步輸入輸出

o_dsync  等待物理 i/o 結束後再 write。在不影響讀取新寫入的資料的前提下,不等待檔案屬性更新。

o_rsync  read 等待所有寫入同一區域的寫操作完成後再進行

o_sync  等待物理 i/o 結束後再 write,包括更新檔案屬性的 i/o

open 返回的檔案描述符一定是最小的未被使用的描述符。

如果 name_max(檔名最大長度,不包括'\0')是 14,而我們想在當前目錄下建立檔名長度超過 14 位元組的檔案,早期的 system v 系統(如 svr2)會截斷超出部分,只保留前 14 個位元組;而由 bsd 衍生的(bsd-derived)系統會返回錯誤資訊,並且把 errno 置為 enametoolong。

posix.1 引入常量 _posix_no_trunc 用於決定是否截斷長檔名/長路徑名。如果_posix_no_trunc 設定為禁止截斷,並且路徑名長度超過 path_max(包括 '\0'),或者組成路徑名的任意檔名長度超過 name_max,則返回錯誤資訊,並且把 errno 置為 enametoolong。

open函式用來開啟乙個裝置,他返回的是乙個整型變數,如果這個值等於-1,說明開啟檔案出現錯誤,如果為大於0的值

參考格式 if(fd=open("/dev/ttys0",o_rdwr | o_noctty | o_ndelay))<0 ;

int open(const char *pathname, int oflag, …/*, mode_t mode * / ) ;

開啟的操作型別有如下幾種

1) o_rdonly 唯讀開啟

2) o_wronly 只寫開啟

3) o_rdwr 讀、寫開啟

5) o_creat 若此檔案不存在則建立它。使用此選擇項時,需同時說明第三個引數mode,用其說明該新檔案的訪問許可權位。

6) o_excl 如果同時指定了o_creat,而檔案已經存在,則出錯。這可測試乙個檔案是否存在,如果不存在則建立此檔案成為乙個原子操作。

7) o_trunc 如果此檔案存在,而且為唯讀或只寫成功開啟,則將其長度截短為0。

8) o_noctty 如果p a t h n a m e指的是終端裝置,則不將此裝置分配作為此程序的控制終端。

9) o_nonblock 如果p a t h n a m e指的是乙個f i f o、乙個塊特殊檔案或乙個字元特殊檔案,則此選擇項為此檔案的本次開啟操作和後續的i / o操作設定非阻塞方式。

10)o_sync 使每次w r i t e都等到物理i / o操作完成。

這些控制字都是通過「或」符號分開(|)

ARM Linux開發 Linux鏈結

鏈結有兩種方式 硬鏈結和軟鏈結。一 軟鏈結 軟鏈結又叫做符號鏈結。基本命令為 plain ln s sourceplace newplace 軟鏈結可以鏈結任何檔案或者目錄,還可以鏈結不同檔案系統的檔案或者目錄。軟鏈結的特點 1.要建立鏈結時,newplace必須是存在的 而當sourceplace...

ARM Linux開發 Linux鏈結 ln

ln命令是linux中的乙個非常重要的命令,它為乙個檔案在另一位置建立同步鏈結,有兩種 符號鏈結和硬鏈結。ln命令詳解 ln options source dist 常用引數 f 鏈結時先將與 dist 同名的檔案刪除 d 允許系統管理者硬鏈結自己的目錄 i 在刪除與 dist 同名的檔案時先進行詢...

ARM Linux開發 Linux檢視裝置驅動

驅動操作命令 insmod modprobe 載入驅動 rmmod 解除安裝驅動 lsmod 檢視系統中所有已經被載入了的所有的模組以及模組間的依賴關係 modinfo 獲得模組的資訊 檢視已經載入的驅動模組的資訊 lsmod 能夠顯示驅動的大小以及被誰使用 cat proc modules 能夠顯...