開啟關閉檔案和讀寫檔案

2021-10-01 03:43:22 字數 1658 閱讀 8643

一、開啟和關閉檔案

int open(char *filename,int flags,mode_t mode),開啟檔案

open函式將filename轉換為乙個檔案描述符

flags引數也可以是乙個或者更多位掩蓋的

mode引數指定了新檔案的訪問許可權位

int close(int fd),關閉檔案

例子:

int

main()

輸出:

fd=

3

解析:因為在程序中描述符已經佔了0、1、2,而opern函式返回的描述符總是在程序中當前沒有開啟的最小描述符。第一次開啟檔案時,fd1=3,但呼叫了close 函式關閉檔案,所以並沒有影響後面的fd2=3;

二:讀和寫檔案

ssize_t read(int fd,void *buf,size_t n),讀檔案

ssize_t write(int fd,const void *buf,size_t n),寫檔案

其中size_t被定義為un_signed long,而ssize_t被定義為long。

三、綜合

例1

int

main()

輸出:

c=f
解析:

開啟乙個檔案,游標從檔案第乙個開始,所以即使開啟了兩次檔案,讀到的都只是第乙個字母所以c=f

例2

int

main()

wait

(null);

read

(fd,

&c,1);

printf

("c=%c\n"

,c);

exit(0

);}

輸出:

c=o
解析:

根據fork()函式的特點,子程序與父程序公用資源,則開啟一次檔案,父程序讀取第乙個字母,子程序就會讀第二個字母,所以輸出c=o

四、i/o重定向

int dup2(int oldfd,int newfd)

dup2函式複製描述符表表項oldfd到描述符表表項newfd,覆蓋描述符表表項newfd以前的內容

例1

int

main(0

輸出.;

c=o
解析:開啟了兩次檔案,應該是都指向檔案的第乙個字母,但是由於dup2的覆蓋效果,fd2覆蓋了fd1的內容,則讀取fd1的內容實則是讀fd2的內容,所以游標下移,輸出第二個字母

例2

int

main

(int argeint argc,

char

*ar**)

檔案為:「abcdef」

輸出:

c1=a,c2=a,c3=b
解析:開啟三次檔案,游標都在檔案的第乙個字母,但由於fd2的內容覆蓋了fd3的內容,所以在讀fd3的內容時讀出的應該是fd2的內容,則輸出的c1是檔案中的第乙個字母,c2也是檔案中的第乙個字母,c3就是c2後的字母,即檔案的第二個字母

檔案的開啟 關閉 讀寫

二 對檔案的操作 2.檔案的讀寫 2.2 檔案的隨機讀寫 1.檔案是什麼?檔案通常是在磁碟或固態硬碟上的一段已命名的儲存區,是指存放在外部儲存介質 可以是磁碟 光碟 磁帶等 上的資料集合。c把檔案看作是一系列連續的位元組,每個位元組都能被單獨讀取。2.檔案的操作流程 開啟 建立 檔案 讀寫檔案 關閉...

檔案的建立開啟關閉讀寫

檔案輸入輸出函式 creat open close read write lseek等 對於核心而言,所有開啟的檔案都由檔案描述符標識 檔案描述符是乙個非負整數。讀寫檔案時 先呼叫open或creat函式開啟檔案,成功執行時都將返回乙個檔案描述符。在讀寫時將其作為引數傳遞給read或write.檔案...

Windows中開啟和關閉FSO檔案讀寫許可權的方法

windows98系統 在dos命令列狀態輸入以下命令 關閉命令 regsvr32 u c windows system scrrun.dll 開啟命令 regsvr32 c windows system scrrun.dll win2000系統 在cmd命令列狀態輸入以下命令 關閉命令 regsv...