linux 打开关闭文件,Linux系统编程-文件打开关闭
一、文件描述符
對于Linux而言,所有對設備或文件的操作都是通過文件描述符進行的。當打開或者創建一個文件的時候,內核向進程返回一個文件描述符(非負整數)。后續對文件的操作只需通過該文件描述符,內核記錄有關這個打開文件的信息(file結構體)。
一個進程啟動時,默認打開了3個文件,標準輸入、標準輸出、標準錯誤,對應文件描述符是0(STDIN_FILENO)、1(STDOUT_FILENO)、2(STDERR_FILENO),這些常量定義在unistd.h頭文件中。
另外介紹下面兩個函數:
fileno:將文件指針轉換為文件描述符
fdopen:將文件描述符轉換為文件指針
二、什么是I/O
輸入/輸出是主存和外部設備之間拷貝數據的過程
設備->內存 (輸入操作)
內存->設備 (輸出操作)
高級I/O
ANSI C提供的標準I/O庫稱為高級I/O,通常也稱為帶緩沖的I/O
低級I/O
通常也稱為不帶緩沖的I/O
三、文件的打開關閉
open系統調用1:
函數原型
int open(const char *path, int flags);
參數
path :文件的名稱,可以包含(絕對和相對)路徑
flags:文件打開模式
返回值:
打開成功,返回文件描述符;打開失敗,返回-1
open系統調用2:
函數原型
int open(const char *path, int flags,mode_t mode);
參數
path :文件的名稱,可以包含(絕對和相對)路徑
flags:文件打開模式
mode: ?用來規定對該文件的所有者,文件的用戶組及系?統中其他用戶的訪問權限
返回值:
打開成功,返回文件描述符;打開失敗,返回-1
下面是文件打開的模式:
O_RDONLY打開一個供讀取的文件
O_WRONLY打開一個供寫入的文件
O_RDWR打開一個可供讀寫的文件
O_APPEND寫入的所有數據將被追加到文件的末尾
O_CREAT打開文件,如果文件不存在則建立文件
O_EXCL如果已經置O_CREAT且文件存在,則強制open() 失敗
O_TRUNC在open() 時,將文件的內容清空
O_CLOEXEC 在進行exec進程替換時關閉打開的文件描述符。
Specifying this flag permits a program to avoid additional ?fcntl(2) F_SETFD operations to set the FD_CLOEXEC flag.
O_NONBLOCK 非阻塞模式
總結
以上是生活随笔為你收集整理的linux 打开关闭文件,Linux系统编程-文件打开关闭的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 诚e贷是什么
- 下一篇: 周日工商银行营业时间