概念
在Linux中幾乎一切都可以看作文件琢融。that's all.
文件描述符
所有被打開的文件都由文件描述符來引用诵叁,文件描述符是一個(gè)非負(fù)整數(shù)雁竞。類似windows的HANDLE。
系統(tǒng)啟動時(shí),會有3個(gè)已經(jīng)打開的文件描述符:
0: 標(biāo)準(zhǔn)輸入
1: 標(biāo)準(zhǔn)輸出
2: 標(biāo)準(zhǔn)錯誤
在<unistd.h>頭文件中對這3個(gè)常數(shù)定義如下:
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
系統(tǒng)函數(shù)
open
功能
打開或創(chuàng)建文件
聲明
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char* pathname, int oflag, ...);
返回
若成功為文件描述符碑诉,出錯為-1彪腔。
參數(shù)
pathname:要打開或創(chuàng)建的文件名
oflag: 一個(gè)或多個(gè)常數(shù)進(jìn)行或運(yùn)行(這些常數(shù)定義在<fcntl.h>中):
- O_RDONLY 只讀打開
- O_WRONLY 只寫打開
- O_RDWR 讀寫打開
上面3個(gè)常數(shù)只能選擇一個(gè)。 - O_APPEND 追加寫
- O_CREATE 文件不存在則創(chuàng)建进栽。使用該選項(xiàng)時(shí)要指定第三個(gè)參數(shù)Mode德挣,說明文件的存取許可權(quán)位
- O_EXCL 如果同時(shí)指定O_CREATE,而文件已經(jīng)存在快毛,則出錯格嗅。
- O_TRUNC 如果此文件存在,而且為只讀或只寫打開唠帝,則將文件長度截?cái)酁?
- O_NOCTTY
- O_NONBLOCK
- O_SYNC