// 開啟檔案
int open(const char *pathname, int flags);
pathname 文加名,可以是相對路徑或絕對路徑
flags 開啟的模式
必須有以下三個中之一:
o_rdonly 唯讀
o_wronly 只寫
o_rdwr 讀寫
o_trunc 清空檔案 只用到普通檔案
返回值:
成功:非負整數的檔案描述符
失敗:-1
// 建立並開啟檔案
int open(const char *pathname, int flags, mode_t mode);
flags 在原來的基礎上加上:
o_creat 建立檔案
o_excl 必須和o_creat一起使用,表示如果檔案不存在
就建立,如果檔案存在就失敗
open("",
o_rdwr
o_rdonly
o_rwonly
o_rdwr|o_creat
o_rdrw|o_creat|o_excl
建立檔案時,許可權會受到umask的影響
mode = mode & ~umask
如果建立的檔案不想被umask影響,可以通過系統提供的umask函式來更改
// 更改umask值
mode_t umask(mode_t mask); //返回值為舊mask
mask 新設定的umask值
返回舊umask值
//讀檔案:
ssize_t read(int fd, void *buf, size_t count);
// 從fd檔案中讀取最多count個資料到buf中
返回值 > 0 讀取到的位元組數
= 0 讀到檔案結尾了
= -1 出錯
//寫檔案:
ssize_t write(int fd, const void *buf, size_t count);
// 從buf位置開始寫最多count個資料到fd檔案中
返回值 實際寫入的位元組數
//read和write的不同:
read返回表示資料從磁碟讀到應用程式緩衝區
write返回僅僅表示資料寫入到核心緩衝區,
如果需要write等到實際寫入磁碟再返回,需要在open加入o_sync
也可以通過fsync(int fd) 這個函式將核心快取中的資料刷入磁碟
//關閉檔案
int close(int fd);
//檔案的隨機讀寫
通過定位基於開始位置,當前位置,檔案末尾的偏移offset個位元組來重新定位
off_t lseek(int fd, off_t offset, int whence);
off_t offset, // 偏移量
// seek_set 檔案開頭
// seek_cur 檔案當前位置
// seek_end 檔案末尾
空洞檔案
//獲得記憶體頁大小
int getpagesize(void);
//截斷檔案
int ftruncate(int fd, off_t length);
// 將fd檔案截斷程length長
// 如果length小於原來檔案長度,原始檔多餘部分被丟棄
// 如果length大於原始檔,會擴張檔案長度,並且多餘部分補成\0
可以用以下命令去檢視:
cat //檢視當前檔案內容
ls -l //
du -h //檢視
od -c
目錄操作
// 開啟目錄
dir *opendir(const char *name);
//讀取檔案:
struct dirent *readdir(dir *dirp);
struct dirent ;
// 讀取目錄的內容
// 每次讀取會自動偏移到下乙個
// 讀取完畢返回null
//關閉檔案:
int closedir(dir *dirp);
Linux系統用到命令積累
1 修改密碼命令 非root身份 輸入passwd,會提示輸入當前使用者所用的密碼,輸入後提示輸入新密碼,需輸入兩次。當第一次登入linux系統時,可以使用sudo passwd root來為root設定密碼,一旦密碼設定好後,就不能再通過這個方法來更改了。root身份 輸入passwd後會要求直接...
delphi split函式 積累
function splitstring const source,ch string tstringlist vartemp string i integer chlength integer begin result tstringlist.create 如果是空自符串則返回空列表 if sou...
excel函式積累
1 根據日期計算星期幾 1 weekday serial number,return type serial number 必需。乙個序列號,代表嘗試查詢的那一天的日期。應使用 date 函式輸入日期,或者將日期作為其他公式或函式的結果輸入。例如,使用函式 date 2008,5,23 輸入 200...