?? 09.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><!-- saved from url=(0056)http://linux.tcpip.com.cn/~foolox/c_fun/function/09.html --><HTML><HEAD><TITLE>Untitled Document</TITLE><META http-equiv=Content-Type content="text/html; charset=gb2312"><META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD><BODY><TABLE width="100%"> <TBODY> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋體 size=2><A name=linuxc133></A></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD> <TD><FONT face=宋體 size=2><BR>close(關(guān)閉文件) </FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>相關(guān)函數(shù) </FONT></DIV></TD> <TD><FONT face=宋體 size=2>open,fcntl,shutdown,unlink,fclose<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>#include<unistd.h><BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>定義函數(shù) </FONT></DIV></TD> <TD><FONT face=宋體 size=2>int close(int fd);<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>函數(shù)說明 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>當(dāng)使用完文件后若已不再需要?jiǎng)t可使用close()關(guān)閉該文件,二close()會讓數(shù)據(jù)寫回磁盤,并釋放該文件所占用的資源。參數(shù)fd為先前由open()或creat()所返回的文件描述詞。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>若文件順利關(guān)閉則返回0,發(fā)生錯(cuò)誤時(shí)返回-1。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>錯(cuò)誤代碼 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>EBADF 參數(shù)fd 非有效的文件描述詞或該文件已關(guān)閉。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>附加說明 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>雖然在進(jìn)程結(jié)束時(shí),系統(tǒng)會自動關(guān)閉已打開的文件,但仍建議自行關(guān)閉文件,并確實(shí)檢查返回值。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>范例 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>參考o(jì)pen()<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋體 size=2><A name=linuxc134></A></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD> <TD><FONT face=宋體 size=2><BR>creat(建立文件) </FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>相關(guān)函數(shù) </FONT></DIV></TD> <TD><FONT face=宋體 size=2>read,write,fcntl,close,link,stat,umask,unlink,fopen<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>#include<sys/types.h><BR>#include<sys/stat.h><BR>#include<fcntl.h><BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>定義函數(shù) </FONT></DIV></TD> <TD><FONT face=宋體 size=2>int creat(const char * pathname, mode_tmode);<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>函數(shù)說明 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>參數(shù)pathname指向欲建立的文件路徑字符串。Creat()相當(dāng)于使用下列的調(diào)用方式調(diào)用open()<BR>open(const char * pathname ,(O_CREAT|O_WRONLY|O_TRUNC));<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>錯(cuò)誤代碼 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>關(guān)于參數(shù)mode請參考o(jì)pen()函數(shù)。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>creat()會返回新的文件描述詞,若有錯(cuò)誤發(fā)生則會返回-1,并把錯(cuò)誤代碼設(shè)給errno。<BR>EEXIST 參數(shù)pathname所指的文件已存在。<BR>EACCESS 參數(shù)pathname 所指定的文件不符合所要求測試的權(quán)限<BR>EROFS 欲打開寫入權(quán)限的文件存在于只讀文件系統(tǒng)內(nèi)<BR>EFAULT 參數(shù)pathname 指針超出可存取的內(nèi)存空間<BR>EINVAL 參數(shù)mode 不正確。<BR>ENAMETOOLONG 參數(shù)pathname太長。<BR>ENOTDIR 參數(shù)pathname為一目錄<BR>ENOMEM 核心內(nèi)存不足<BR>ELOOP 參數(shù)pathname有過多符號連接問題。<BR>EMFILE 已達(dá)到進(jìn)程可同時(shí)打開的文件數(shù)上限<BR>ENFILE 已達(dá)到系統(tǒng)可同時(shí)打開的文件數(shù)上限<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>附加說明 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>creat()無法建立特別的裝置文件,如果需要請使用mknod()。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>范例 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>請參考o(jì)pen()。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋體 size=2><A name=linuxc135></A></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD> <TD><FONT face=宋體 size=2><BR>dup(復(fù)制文件描述詞) </FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>相關(guān)函數(shù) </FONT></DIV></TD> <TD><FONT face=宋體 size=2>open,close,fcntl,dup2<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>#include<unistd.h><BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>定義函數(shù) </FONT></DIV></TD> <TD><FONT face=宋體 size=2>int dup (int oldfd);<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>函數(shù)說明 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>dup()用來復(fù)制參數(shù)oldfd所指的文件描述詞,并將它返回。此新的文件描述詞和參數(shù)oldfd指的是同一個(gè)文件,共享所有的鎖定、讀寫位置和各項(xiàng)權(quán)限或旗標(biāo)。例如,當(dāng)利用lseek()對某個(gè)文件描述詞作用時(shí),另一個(gè)文件描述詞的讀寫位置也會隨著改變。不過,文件描述詞之間并不共享close-on-exec旗標(biāo)。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>當(dāng)復(fù)制成功時(shí),則返回最小及尚未使用的文件描述詞。若有錯(cuò)誤則返回-1,errno會存放錯(cuò)誤代碼。錯(cuò)誤代碼EBADF參數(shù)fd非有效的文件描述詞,或該文件已關(guān)閉。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋體 size=2><A name=linuxc136></A></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD> <TD><FONT face=宋體 size=2><BR>dup2(復(fù)制文件描述詞) </FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>相關(guān)函數(shù) </FONT></DIV></TD> <TD><FONT face=宋體 size=2>open,close,fcntl,dup<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>#include<unistd.h><BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>定義函數(shù) </FONT></DIV></TD> <TD><FONT face=宋體 size=2>int dup2(int odlfd,int newfd);<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>函數(shù)說明 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>dup2()用來復(fù)制參數(shù)oldfd所指的文件描述詞,并將它拷貝至參數(shù)newfd后一塊返回。若參數(shù)newfd為一已打開的文件描述詞,則newfd所指的文件會先被關(guān)閉。dup2()所復(fù)制的文件描述詞,與原來的文件描述詞共享各種文件狀態(tài),詳情可參考dup()。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>當(dāng)復(fù)制成功時(shí),則返回最小及尚未使用的文件描述詞。若有錯(cuò)誤則返回-1,errno會存放錯(cuò)誤代碼。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>附加說明 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>dup2()相當(dāng)于調(diào)用fcntl(oldfd,F(xiàn)_DUPFD,newfd);請參考fcntl()。<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>錯(cuò)誤代碼 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>EBADF 參數(shù)fd 非有效的文件描述詞,或該文件已關(guān)閉<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋體 size=2><A name=linuxc137></A></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD> <TD><FONT face=宋體 size=2><BR>fcntl(文件描述詞操作) </FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>相關(guān)函數(shù) </FONT></DIV></TD> <TD><FONT face=宋體 size=2>open,flock<BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD> <TD><FONT face=宋體 size=2>#include<unistd.h><BR>#include<fcntl.h><BR></FONT></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>定義函數(shù) </FONT></DIV></TD> <TD><FONT face=宋體 size=2>int fcntl(int fd , int cmd);<BR>int fcntl(int
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -