UNIXLinux環(huán)境高級編程教程文件.ppt

UNIXLinux環(huán)境高級編程教程文件.ppt

ID:59560985

大?。?76.00 KB

頁數(shù):41頁

時間:2020-11-11

UNIXLinux環(huán)境高級編程教程文件.ppt_第1頁
UNIXLinux環(huán)境高級編程教程文件.ppt_第2頁
UNIXLinux環(huán)境高級編程教程文件.ppt_第3頁
UNIXLinux環(huán)境高級編程教程文件.ppt_第4頁
UNIXLinux環(huán)境高級編程教程文件.ppt_第5頁
資源描述:

《UNIXLinux環(huán)境高級編程教程文件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、UNIXLinux環(huán)境高級編程文件描述當(dāng)打開一個現(xiàn)存文件或創(chuàng)建一個新文件時,內(nèi)核向進(jìn)程返回一個文件描述符。當(dāng)讀、寫一個文件時,用open或creat返回的文件描述符標(biāo)識該文件,將其作為參數(shù)傳送給read、write、lseek和close等。按照慣例,UNIXshell使文件描述符:0-stdin1-stdout2-stderr在POSIX.1應(yīng)用程序中,標(biāo)準(zhǔn)I/O描述符被定義為:0-STDIN_FILENO;1-STDOUT_FILENO;2-STDERR_FILENO這些常數(shù)都定義在頭文件中。文件描述符的范圍是0~OPEN_MAX。早期的UNIX版本采用

2、的上限值是19(即20),現(xiàn)在很多系統(tǒng)則將其增加至256且可以以內(nèi)核參數(shù)的辦法設(shè)置,比方說1024。原始系統(tǒng)數(shù)據(jù)類型在UNIX/Linux的開發(fā)過程中用到的以_t結(jié)尾的數(shù)據(jù)為系統(tǒng)原始數(shù)據(jù)。系統(tǒng)原始數(shù)據(jù)在頭文件中被定義。出錯處理UNIX函數(shù)出錯時,往常返回一個負(fù)值,而且整型變量errno通常設(shè)置為具有特定信息的一個值。例如,open函數(shù)如成功執(zhí)行則返回一個非負(fù)文件描述符,如出錯則返回-1。在open出錯時,有大約15種不同的errno值。某些函數(shù)并不返回負(fù)值而是使用另一種約定。例如,返回一個指向?qū)ο蟮闹羔樀拇蠖鄶?shù)函數(shù),在出錯時,將返回一個null指針(N

3、ULL)。文件中定義了變量errno以及可以賦與它的各種常數(shù)。這些常數(shù)都以E開頭。在Linux系統(tǒng)中,errno定義在頭文件/usr/include/asm/errno.h,多達(dá)124條。errnoPOSIX定義errno為:externinterrno;對于errno應(yīng)當(dāng)知道兩條規(guī)則:1:如果沒有出錯,則其值不會被一個例程清除。因此,僅當(dāng)函數(shù)的返回值指明出錯時,才檢驗(yàn)其值。2:任一函數(shù)都不會將errno值設(shè)置為0,在中定義的所有常數(shù)都不為0。錯誤處理的標(biāo)準(zhǔn)函數(shù)strerror():功能:以字符串方式打印錯誤信息。用法:#include

4、ring.h>char*strerror(interrnum);返回:指向消息字符串的指針。perror()功能:在標(biāo)準(zhǔn)錯誤上產(chǎn)生一條基于其參數(shù)串和errno的當(dāng)前值出錯消息。用法:#includevoidperror(constchar*msg);輸出:首先輸出由msg指向的字符串,然后是一個冒號,一個空格,然后是對應(yīng)于errno值的出錯信息,然后是一個新行符。處理錯誤的示例1#include#includemain(intargc,char*argv[]){fprintf(stderr,"EACCES=%d:%s",

5、EACCES,strerror(EACCES));errno=ENOENT;perror(argv[0]);}結(jié)果:假設(shè),編譯后生成a.out,則輸出為:EACCES=13:Permissiondenied./a.out:Nosuchfileordirectory處理錯誤的示例2#include#includemain(intargc,char*argv[]){inti,fd;for(i=1;i

6、}open功能:打開或創(chuàng)建一個文件,并返回一個文件描述符。用方:#include#include#includeintopen(constchar*name,intoflag);intopen(constchar*ame,intoflag,mode_tmode);返回值:成功時為文件描述符,出錯則為-1。出錯時errno被設(shè)置。open的參數(shù)pathname是要打開或創(chuàng)建的文件的名字。oflag參數(shù)可用來說明此函數(shù)的多個選擇項(xiàng)。用下列一個或多個常數(shù)進(jìn)行或運(yùn)算構(gòu)成oflag參數(shù)(在fcntl.h中):?O_RDO

7、NLY:只讀打開。?O_WRONLY:只寫打開。?O_RDWR:讀寫打開?O_APPEND:追加方式。?O_CREAT:若不存在則創(chuàng)建它。需同時使用第三個參數(shù)mode。?O_EXCL:如果同時指定了O_CREAT,而文件已經(jīng)存在,則出錯。這可測試一個文件是否存在,如果不存在則創(chuàng)建此文件成為一個原子操作。?O_TRUNC:果此文件存在,則將其長度截短為0。?O_NOCTTY:如果pathname指的是終端設(shè)備,則不將此設(shè)備分配作為此進(jìn)程的控制終端。?O_NONBLOCK:如果pathname指

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。