intopen(constchar*pathname,intflag,mode_tmode);//若成功則返回文件描述符,若出錯(cuò)則返回-1flag打" />

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Linux學(xué)習(xí)筆記10——文件I/O之一

系統(tǒng) 2292 0

UNIX系統(tǒng)中的大多數(shù)文件I/O只需要用到5個(gè)函數(shù):open,read,write,lseek以及close

文件描述符 文件描述符是一個(gè)非負(fù)整數(shù),所有打開(kāi)的文件都通過(guò)文件描述符引用 文件描述符的變化范圍是0-OPEN_MAX,OPEN_MAX是每個(gè)進(jìn)程最多打開(kāi)的文件

1、open函數(shù)

#include<fcntl.h>

  int open(const char* pathname,

       int flag,

       mode_t mode

      ); ?//若成功則返回文件描述符,若出錯(cuò)則返回-1

  flag打開(kāi)方式有3種:O_RDONLY?只讀打開(kāi)

          ? ??O_WRONLY 只寫(xiě)打開(kāi) ?

           ?O_RDWR 讀、寫(xiě)打開(kāi)

  這三個(gè)是互斥的,不可以同時(shí)使用,以下常量是選用的:

    O_APPEND????? 每次寫(xiě)操作都寫(xiě)入文件的末尾

    O_CREAT??????? 如果指定文件不存在,則創(chuàng)建這個(gè)文件

    O_EXCL???????? 如果要?jiǎng)?chuàng)建的文件已存在,則返回 -1,并且修改errno的值

    O_TRUNC??????? 如果文件存在,并且以只寫(xiě)/讀寫(xiě)方式打開(kāi),則清空文件全部?jī)?nèi)容

    O_NOCTTY?????? 如果路徑名指向終端設(shè)備,不要把這個(gè)設(shè)備用作控制終端。

    O_NONBLOCK???? 如果路徑名指向 FIFO/塊文件/字符文件,則把文件的打開(kāi)和后繼 I/O,設(shè)置為非阻塞模式(nonblocking mode)

  大多數(shù)實(shí)現(xiàn)將O_RDONLY定義為0,O_WRONLY定義為1,O_RDWR定義為2

  mode參數(shù)只有創(chuàng)建新文件時(shí)才使用,用來(lái)設(shè)置文件訪問(wèn)權(quán)限的初始值。

  S_IRUSR,S_IWUSER,S_IXUSR,S_IRGRP,S_IWGRP,S_IXGRP,S_IROTH,S_IWOTH,S_IXOTH.其中R:讀,W:寫(xiě),X:執(zhí)行,USR:文件所屬的用戶,GRP:文件所屬的組,OTH:其他用戶。

?

2、create函數(shù)

#include <fcntl.h>

  int create(const char* pathname,

        mode_t mode

       );?     //若成功則返回為只寫(xiě)打開(kāi)的文件描述符,若出錯(cuò)則返回-1

  等效于open(pathname,O_WRONLY | O_CREATE | O|TRUNC,mode);

  create的不足:它以只寫(xiě)方式打開(kāi)所創(chuàng)建的文件,當(dāng)需要先寫(xiě)文件,然后讀該文件時(shí),可以用open代替,如:

    open(pathname,O_RDWR | O_CREATE | O_TRUNC,mode);

?

3、read函數(shù)

#include <unistd.h>

  ssize_t read(int fd,               ?//文件描述符

       ????? void *buf,??            ?//要寫(xiě)入內(nèi)核對(duì)象的數(shù)據(jù)

       ????? size_t size?           ?//空間大小 ?????

        );                ?//若成功則返回讀到的字節(jié)數(shù),若已到文件結(jié)尾則返回0,若出錯(cuò)返回-1

?

4、write函數(shù)

#include <unistd.h>

  sszie_t write( int fd,??           //文件描述符

       ? ? ? ? const void *buf,??    ? ?//要寫(xiě)入內(nèi)核對(duì)象的數(shù)據(jù)

          size_t size?        ?//寫(xiě)入數(shù)據(jù)大小 ??????

          );?             ?//若成功則返回已寫(xiě)的字節(jié)數(shù),若出錯(cuò)則返回-1

?

5、lseek函數(shù)

  lseek為一個(gè)打開(kāi)的文件設(shè)置其偏移量

#include <unistd.h>

  off_t lseek(int fd,?           //定位文件描述符號(hào)

      ????? off_t offset,       ? ?//定位位置

      ????? int whence?         ?//定位參照點(diǎn):文件開(kāi)始位置/文件結(jié)束位置/文件當(dāng)前位置

     ????? );??             //若成功則返回新的文件偏移量,若出錯(cuò)則返回-1

  參數(shù)whence:SEEK_SET:該文件的偏移量為文件開(kāi)始位置offset個(gè)字節(jié) ???

         SEEK_CUR:當(dāng)前位置加offset

      ? ???? SEEK_END:文件結(jié)束位置加offset

?

6、close函數(shù)

#include <unistd.h>

  int close(int fd);? ?//若成功則返回0,若出錯(cuò)則返回-1

  關(guān)閉一個(gè)文件時(shí)還會(huì)釋放該進(jìn)程加在該文件上的所有記錄鎖,當(dāng)一個(gè)進(jìn)程終止時(shí),內(nèi)核自動(dòng)關(guān)閉它所有打開(kāi)的文件

?

?

?

?

?

?

?

?

?

?

Linux學(xué)習(xí)筆記10——文件I/O之一


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論