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

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Linux學習筆記10——文件I/O之一

系統 2170 0

UNIX系統中的大多數文件I/O只需要用到5個函數:open,read,write,lseek以及close

文件描述符 文件描述符是一個非負整數,所有打開的文件都通過文件描述符引用 文件描述符的變化范圍是0-OPEN_MAX,OPEN_MAX是每個進程最多打開的文件

1、open函數

#include<fcntl.h>

  int open(const char* pathname,

       int flag,

       mode_t mode

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

  flag打開方式有3種:O_RDONLY?只讀打開

          ? ??O_WRONLY 只寫打開 ?

           ?O_RDWR 讀、寫打開

  這三個是互斥的,不可以同時使用,以下常量是選用的:

    O_APPEND????? 每次寫操作都寫入文件的末尾

    O_CREAT??????? 如果指定文件不存在,則創建這個文件

    O_EXCL???????? 如果要創建的文件已存在,則返回 -1,并且修改errno的值

    O_TRUNC??????? 如果文件存在,并且以只寫/讀寫方式打開,則清空文件全部內容

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

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

  大多數實現將O_RDONLY定義為0,O_WRONLY定義為1,O_RDWR定義為2

  mode參數只有創建新文件時才使用,用來設置文件訪問權限的初始值。

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

?

2、create函數

#include <fcntl.h>

  int create(const char* pathname,

        mode_t mode

       );?     //若成功則返回為只寫打開的文件描述符,若出錯則返回-1

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

  create的不足:它以只寫方式打開所創建的文件,當需要先寫文件,然后讀該文件時,可以用open代替,如:

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

?

3、read函數

#include <unistd.h>

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

       ????? void *buf,??            ?//要寫入內核對象的數據

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

        );                ?//若成功則返回讀到的字節數,若已到文件結尾則返回0,若出錯返回-1

?

4、write函數

#include <unistd.h>

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

       ? ? ? ? const void *buf,??    ? ?//要寫入內核對象的數據

          size_t size?        ?//寫入數據大小 ??????

          );?             ?//若成功則返回已寫的字節數,若出錯則返回-1

?

5、lseek函數

  lseek為一個打開的文件設置其偏移量

#include <unistd.h>

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

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

      ????? int whence?         ?//定位參照點:文件開始位置/文件結束位置/文件當前位置

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

  參數whence:SEEK_SET:該文件的偏移量為文件開始位置offset個字節 ???

         SEEK_CUR:當前位置加offset

      ? ???? SEEK_END:文件結束位置加offset

?

6、close函數

#include <unistd.h>

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

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

?

?

?

?

?

?

?

?

?

?

Linux學習筆記10——文件I/O之一


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一区二区不卡在线观看 | 香蕉成人啪国产精品视频综合网 | 超碰在线小说 | 四虎永久在线观看 | 羞羞视频网站在线观看 | 狠狠狠色丁香婷婷综合久久88 | 91青草视频 | 综合7799亚洲伊人爱爱网 | 看全色黄大色黄大片爽一下 | 亚洲一区中文字幕在线观看 | 中文字幕久精品免费视频蜜桃视频 | 超91精品手机国产在线 | 美女国产在线 | 五月天婷婷一区二区三区久久 | 国产亚洲精品九九久在线观看 | 99精品国产一区二区三区 | 国产高清对白国产露脸91 | 亚洲精品老司机综合影院 | 亚洲精品99久久久久久 | 欧美性生活在线 | 四虎影视在线永久免费观看 | 欧美xxxx4khd超高清 | 成人嫩草研究院网站进 | 成熟女人50岁一级毛片不卡 | 成人毛片免费视频 | 久久免费精品一区二区 | 久久精品成人免费网站 | 午夜亚洲国产理论秋霞 | 午夜dj影院在线视频观看完整 | 青青青爽在线视频观看 | 97高清国语自产拍免费 | 成人性色生活片免费看爆迷你毛片 | 欧美成人爽毛片在线视频 | 免费看一级a一片毛片 | 九九热在线播放 | 99久久精彩视频 | 男人女人真曰批的视频动态 | h片在线看 | 极品女神西比尔久久精品 | 欧美一区二区三区网站 | 日韩中文字幕在线亚洲一区 |