linux open函式
open 函式用於開啟和建立檔案。以下是 open 函式的簡單描述
#include int open(constchar *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 能夠顯...