date 2020-08-03
檔案控制
#include
int fcntl (int fd ,int cmd,…);
1.複製檔案描述符
int fcntl(int oldfd,f_dupfd,newfd);
成功返回目標檔案描述符(可能為newfd),失敗返回-1
oldfd:原始檔描述符
newfd: 目標檔案描述符
fcntl函式在複製oldfd引數所標識的原始檔描述符表項時,會先檢查由newfd引數所標識的的目標檔案描述符表項是否空閒,若空閒將前者複製給後者,否則並不會將其關閉,而是找另乙個空閒的檔案描述符作為複製目標
示例** fcntl.c
/*
date 2020-08-03
name fcntl.c
version 1.0
*/#include
#include
2.獲取/設定檔案描述標誌
int fcntl(int fd,f_setfd,int flags);
成功返回0,失敗返回-1
示例** fd.c
/*
date 2020-08-05
name fd.c
version 1.0
*/#include
#include
intmain
(void
)int flags =
fcntl
(fd,f_getfd);if
(-1== flags)
printf
("檔案描述符標誌:%08x\n"
,flags);if
(flags & fd_cloexe)
printf
("檔案描述符%d將在新程序中被關閉。\n"
,fd)
;else
printf
("檔案描述符%d將不會在新程序中關閉。\n"
,fd);if
(fcntl
(fd,f_setfd,flags | fd_cloexec)==-
1)if(
(flags =
fcntl
(fd,f_getfd)==-
1)printf
("檔案描述符標誌:%08x\n"
,flags);if
(flags & fd_cloexe)
printf
("檔案描述符%d將在新程序中被關閉。\n"
,fd)
;else
printf
("檔案描述符%d將不會在新程序中關閉。\n"
,fd)
;close
(fd)
;return0;
}
檔案鎖
1.讀寫衝突
a.寫衝突:如果有兩個或兩個以上的程序「同時」向乙個檔案的某個特定區域寫資料,那麼最後寫入檔案的資料極有可能因為寫交錯而產生混亂
b.讀衝突:如果乙個程序寫而其他程序同時讀乙個檔案的某個特定區域,那麼讀出來的資料極有可能因為讀寫操作的交錯而不完整。
c.讀共享:多個程序同時讀乙個檔案的某個特定區域,不會有任何問題,它們只是各自把檔案中的資料拷貝到各自的緩衝區去,並不會改變檔案的內容,因此也就不會影響到彼此。
C C 學習筆記 三
到目前為止,我們看到的所有函式中,傳遞到函式中的引數全部是按數值傳遞的 by value 也就是說,當我們呼叫乙個帶有引數的函式時,我們傳遞到函式中的是變數的數值而不是變數本身。但在某些情況下你可能需要在乙個函式內控制乙個函式以外的變數。要實現這種操作,我們必須使用按位址傳遞的引數 argument...
Linux學習筆記(三)Linux檔案操作
1.使用cp命令複製檔案或目錄,格式為 cp 原始檔 資料夾 目標檔案 資料夾 2.使用mv命令移動或者重新命名檔案或目錄,格式為 mv 檔案 目標目錄 3.刪除檔案 使用rm命令可以刪除檔案或目錄 4.建立 刪除目錄 mkdir命令用於建立乙個目錄,rmdir用於刪除乙個目錄,rm r f 命令也...
python學習筆記(三) 檔案操作
對檔案的操作分三步 1 開啟檔案獲取檔案的控制代碼,控制代碼就理解為這個檔案 2 通過檔案控制代碼操作檔案 3 關閉檔案。現有以下檔案a.txt 登鸛雀樓 唐代 王之渙 白日依山盡,黃河入海流。一 檔案基本操作 f open a.txt a encoding utf 8 開啟乙個檔案 f.seek ...