<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 操作系統 > Linux教程 > Linux下文件I/O操作的相關知識

        Linux下文件I/O操作的相關知識

        時間: 孫勝652 分享

        Linux下文件I/O操作的相關知識

          Linux文件I/O主要指的是文件的輸入輸出,很多初學者對文件的I/O不是很了解,Linux文件I/O的操作較多,下面學習啦小編就給大家詳細介紹下Linux文件I/O。

          對內核而言,所以打開的文件都通過文件描述符引用。每個進程都有一些與之關聯的文件描述符。文件描述符是一個非負整數。當打開一個現有文件或創建一個新文件時,內核向進程返回一個文件描述符。當讀或寫一個文件時,使用open或creat返回的文件描述符標識該文件,將其作為參數傳送給read和write。

          一般有三個以及打開的文件描述符,他們是:

          代碼如下:

          0:標準輸入 STDIN_FILENO

          1:標準輸出 STDOUT_FILENO

          2標準錯誤輸出 STDERR_FILENO

          每行后面的符號常量是依從POSIX而定的。

          open函數

          代碼如下:

          #include 《sys/types.h》

          #include 《sys/stat.h》

          #include 《fcntl.h》

          int open(const char *pathname, int flags);

          int open(const char *pathname, int flags,mode_t mode);

          pathname是要打開或創建文件的名字。

          flag用來定義打開文件所采取的的動作,必須調用以下模式之一

          O_RDONLY, O_WRONLY, O_RDWR分別代表只讀,只寫,讀寫方式打開。

          open還可以包括以下可選模式的組合

          O_APPEND:把寫入數據追加到文件的尾端

          O_CREAT:若文件不存在,則創建它。使用此選項時,需要第三個參數mode,用其指定該新文件的訪問權限。

          O_EXCL:如果同時指定了O_CREAT,而文件存在,則會出錯。用此可以測試一個文件是否存在,如果存在,則創建文件,這使測試和創建兩者成為一個原子操作。

          O_TRUNC: 如果此文件存在,而且為只寫或讀寫成功打開,則將其長度截為0。

          open返回的文件描述符一定是最小的未用描述符數值。這一點被某些應用程序用在標準輸入,標準輸出或標準錯誤輸出上。如,一個程序關閉了自己的標準輸出,然后再次調用open,文件描述符1就會被調用,并且標準輸出將被有效的重定向到另一個文件或設備。

          POSIX規范還標準化了一個creat調用,此函數等效于

          open(pathname,O_WONLY |O_CREAT | O_TRUNC, mode);

          close函數

          #include 《unistd.h》

          int close(int fd);

          close調用終止一個文件描述符fd與對應文件之間的關聯。文件描述符被釋放后并能重新使用。close調用成功返回0,出錯返回-1.

          關閉一個文件時會釋放該進程加在文件上的所有記錄鎖。當一個進程終止時,內核自動關閉它所有打開的文件。

          lseek函數

          每個打開的文件都有一個與其相關聯的”當前文件偏移量”。按系統默認情況,當打開一個文件時,除非指定O_APPEND選項,否則該偏移量被設置為0。lseek可以為一個打開的文件設置偏移量。

          代碼如下:

          #include 《sys/types.h》

          #include 《unistd.h》

          off_t lseek(int fd, off_t offset, intwhence);

          offset用來指定位置,whence參數定義該偏移值的用法。whence可取以下值:

          代碼如下:

          SEEK_SET: The offset is set to offset bytes.

          SEEK_CUR: The offset is set to its current locationplus offset bytes.

          SEEK_END: The offset is set to the size of the fileplus offset bytes.

          成功調用返回從文件頭到文件指針被設置處的字節偏移值,失敗返回-1。參數offset定義在《sys/types.h》中。

          當偏移量大于文件長度時,出現空洞,空洞不占用存儲區。

          read函數

          代碼如下:

          #include 《unistd.h》

          ssize_t read(int fd, void *buf, size_tcount);

          將與文件描述符fd關聯的文件中讀入count個字符放到buf中。返回讀入的字節數,它可能小于請求的字節數。如果read調用返回0,就表示未讀入任何數據,已到達了文件尾。返回-1,就表示出錯。

          write函數

          代碼如下:

          #include 《unistd.h》

          ssize_t write(int fd, const void *buf,size_t count);

          把緩沖區buf的前count個字節寫入與文件描述符fd相關聯的文件中。返回實際寫入的字節數,通常與count值相同;否則表示出錯。出錯的一個常見原因是:磁盤已寫滿,或者超出了一個給定進程的文件長度限制。

        312210 主站蜘蛛池模板: 宾馆人妻4P互换视频| 精品人妻中文字幕在线| 国产超碰无码最新上传| AV人摸人人人澡人人超碰| 亚洲成av人无码免费观看| 国产一卡2卡三卡4卡免费网站| 久久久久国产a免费观看rela| 欧美色图久久| 色网av免费在线观看| 亚洲少妇一区二区三区老| jizzjizz日本高潮喷水| 加勒比无码人妻东京热| 欧美老熟妇乱子伦牲交视频 | 香港日本三级亚洲三级| 国产成人高清精品亚洲| 欧美videosdesexo吹潮| 无码帝国www无码专区色综合| 久久精品国产亚洲av麻豆长发| 99r久视频精品视频在线| 91久久天天躁狠狠躁夜夜| 美女一区二区三区在线观看视频| 波多野结衣av无码| 国产成人8x视频一区二区| 91免费精品国偷自产在线在线| 光棍天堂在线手机播放免费| 国产偷国产偷亚洲综合av| 久久精品人妻无码专区| 日韩午夜一区二区福利视频| 亚洲天堂亚洲天堂亚洲天堂| 又色又污又爽又黄的网站| 国产白袜脚足j棉袜在线观看| 91久久精品美女高潮不断| 国产精品国色综合久久| 老司机亚洲精品影院| 欧美做受视频播放| 国产目拍亚洲精品区一区| 日本高清中文字幕免费一区二区| 国产精品欧美一区二区三区不卡| 无码av不卡免费播放| 中文字幕精品亚洲无线码二区| 一本久道久久综合婷婷五月|