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