C C 學習筆記 檔案操作(三)

2021-10-08 13:33:33 字數 1664 閱讀 3174

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 ...