一、開啟和關閉檔案
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...