概念
在Linux中幾乎一切都可以看作文件。that's all.
文件描述符
所有被打開的文件都由文件描述符來引用,文件描述符是一個非負整數。類似windows的HANDLE。
系統啟動時,會有3個已經打開的文件描述符:
0: 標準輸入
1: 標準輸出
2: 標準錯誤
在<unistd.h>頭文件中對這3個常數定義如下:
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
系統函數
open
功能
打開或創建文件
聲明
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char* pathname, int oflag, ...);
返回
若成功為文件描述符,出錯為-1。
參數
pathname:要打開或創建的文件名
oflag: 一個或多個常數進行或運行(這些常數定義在<fcntl.h>中):
- O_RDONLY 只讀打開
- O_WRONLY 只寫打開
- O_RDWR 讀寫打開
上面3個常數只能選擇一個。 - O_APPEND 追加寫
- O_CREATE 文件不存在則創建。使用該選項時要指定第三個參數Mode,說明文件的存取許可權位
- O_EXCL 如果同時指定O_CREATE,而文件已經存在,則出錯。
- O_TRUNC 如果此文件存在,而且為只讀或只寫打開,則將文件長度截斷為0
- O_NOCTTY
- O_NONBLOCK
- O_SYNC