Linux檔案程式設計
所謂系統呼叫是指作業系統提供給使用者的一組“特殊”介面,使用者程式可以通過這組“特殊”介面來獲得作業系統核心提供的的服務
由於在Linux中,為了更好地保護核心空間,將程式的執行空間分為核心空間和使用者空間(也就是常稱的核心態和使用者態),它們分別執行在不同的級別上,在邏輯上是相互隔離的。
因此,使用者程式在通常情況下不允許訪問核心資料,也無法使用核心函式,它們只能在使用者空間操作使用者資料,呼叫使用者空間的函式。
系統呼叫並不是直接與程式設計師進行互動的,它僅僅是一個通過軟中斷機制向核心提交請求,以獲取核心服務的介面。在實際使用中程式設計師呼叫的通常是使用者程式設計介面—API
系統命令相對API更高了一層,它實際上一個可執行程式,它的內部引用了使用者程式設計介面(API)來實現相應的功能
Linux一點哲學,“一切皆為檔案”;在Linux中對目錄和裝置的操作都等同於對檔案的操作,都是使用檔案描述符來進行的。
Linux檔案可分為:普通檔案,目錄檔案,連結檔案,裝置檔案;
開啟一個現存檔案或建立一個新檔案時,核心就向程式返回一個檔案描述符;當需要讀寫檔案時,也需要把檔案描述符作為引數傳遞給相應的函式。
檔案描述符是一個非負的整數,它是一個索引值,並指向在核心中每個程式開啟檔案的記錄表。
一個程式啟動時,都會開啟3個檔案:標準輸入、標準輸出和標準出錯處理
int creat(const char *filename, mode_t mode )
filename :建立的檔名
(包含路徑,預設為當前路徑)
mode:建立模式
常建立模式:
S_IRUSR 可讀
S_IWUSR 可寫
S_IXUSR 可執行
S_IXRWU 可讀、可寫、可執行
除用以上巨集來選擇建立模式,也可以用數字來表示
open函式是用於開啟或建立檔案,在開啟或建立檔案時可以指定檔案的屬性及使用者的許可權等各種引數。
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
引數:
pathname是要開啟或建立的檔案的名字
flags引數可用來說明此函式的多個選擇項
mode對於open函式而言,僅當建立新檔案時才使用第三個引數
返回值:成功返回新分配的檔案描述符,
出錯返回-1並設定errn
以下可選項可以同時指定0個或多個, 和必選項按位或起來作為flags引數。
O_CREAT 若此檔案不存在則建立它。使用此選擇項時,需同時說明第三個引數mode,用其說明該新檔案的存取許可權。
O_NONBLOCK 如果pathname指的是一個塊特殊檔案或一個字元特殊檔案,則此選擇項為此檔案的本次開啟操作和後續的I / O操作設定非阻塞方式。
以下三個常數中必須指定一個,且僅允許指定一個(這些常數定義在
相關文章
- linux C 的檔案程式設計Linux程式設計
- Linux系統程式設計-檔案IOLinux程式設計
- Linux系統程式設計之檔案IOLinux程式設計
- 檔案程式設計、檔案下載程式設計
- Linux系統程式設計【4】——檔案系統Linux程式設計
- Linux 程式設計中的檔案鎖之 flockLinux程式設計
- Linux核心程式設計(字元裝置檔案)(轉)Linux程式設計字元
- Linux核心模組程式設計/proc 檔案系統(轉)Linux程式設計
- linux系統程式設計之檔案與IO(三):利用lseek()建立空洞檔案Linux程式設計
- Linux核心程式設計(和裝置檔案對話)(轉)Linux程式設計
- Rust 程式設計,讀取檔案Rust程式設計
- linux系統程式設計之檔案與IO(一):檔案描述符、open,closeLinux程式設計
- 【shell程式設計】目錄檔案計數程式設計
- Linux核心模組程式設計之和裝置檔案對話(轉)Linux程式設計
- Linux系統程式設計(2)——檔案與IO之系統呼叫與檔案IO操作Linux程式設計
- iOS 程式設計 PCH檔案 配置注意iOS程式設計
- 檔案下載統計php程式設計 (轉)PHP程式設計
- Linux系統程式設計(七)檔案許可權系統呼叫Linux程式設計
- Linux系統程式設計(3)——檔案與IO之fcntl函式Linux程式設計函式
- Linux系統程式設計(4)——檔案與IO之ioctl函式Linux程式設計函式
- linux系統程式設計之檔案與IO(五):stat()系統呼叫獲取檔案資訊Linux程式設計
- 檔案屬性-3.2.linux應用程式設計和網路程式設計第2部分Linux程式設計
- 程式設計競賽中讀檔案技能程式設計
- 實驗7 檔案應用程式設計程式設計
- linux程式設計學習筆記(八) 檔案 定位 lseek pread pwriteLinux程式設計筆記
- Linux專案組程式設計規範Linux程式設計
- [溫故而知新] 《Linux/Unix系統程式設計手冊》——檔案I/OLinux程式設計
- linux系統程式設計之檔案與IO(六):實現ls -l功能Linux程式設計
- 程式設計讀寫CAD檔案驗證程式設計
- [python網路程式設計]檔案上傳Python程式設計
- Shell程式設計-檔案讀取方法集錦程式設計
- 實驗7_檔案應用程式設計程式設計
- Scratch少兒程式設計加盟,少兒程式設計課程和教學檔案程式設計
- Linux程式設計Linux程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- linux系統程式設計之檔案與IO(七):時間函式小結Linux程式設計函式
- linux shell程式設計之檔案內容寫入和日誌記錄薦Linux程式設計
- linux系統程式設計之檔案與IO(八):檔案描述符相關操作-dup,dup2,fcntlLinux程式設計