文件IO

  • open函数
    函数原型:

    #include<fcntl.h>
    int open (const char *pathname ,int  flag ,  . . . /* mode_t  mode */ )
    

    需要注意的是,flag参数主要有下面的几个选择:
    1、O_RDONLY 、 只读 | O_WRONLY 只写 | O_RDWR 读写打开;
    2、O_APPEND 追加的方式打开;
    3、O_CREAT 文件不存在的话,先创建文件 ,需要第三个参数指定文件的访问权限;
    4、O_EXCL flag参数值为 O_CREAT | O_EXCL 时,文件已经存在会报错,可以使用此来判断文件是不是存在;
    5、其他的不太常用;

  • creat函数
    函数原型:

     #include<fcntl.h>
    int creat(const char * pathname ,mode_t mode);
    

    此函数等效于 :
    open(pathname, O_WRONLY | O_CREAT | O_TRUNC , mode)
    表示打开的文件描述只能写 ;

  • close 函数

      #include<unistd.h>
     int close(int  fd);
    

    关闭文件描述符

  • lseek函数
    函数原型 :

    #include <unistd.h>
     off_t lseek(int fd , off_t offset ,int whence);
    

    lseek函数可以显示地为打开的文件设置其偏移量。
    函数参数(whence):
    1、SEEK_SET 表示设置文件的偏移为距文件开始处offset个字节;
    2、SEEK_CUR表示设置文件的偏移为距当前位置处offset个字节;
    3、SEEK_END表示设置文件的偏移为距文件结尾处offset个字节;
    成功执行后,返回的是新的文件偏移;

  • read 、 write函数
    函数原型 :

     #include <unistd.h>
     ssize_t read(int fd , void * buf , size_t nbytes);
     ssize_t write(int fd,const void * buf ,size_t nbytes);
    
  • 原子操作函数 pread 、 pwrite函数
    函数原型:

    #include <unistd.h>
    ssize_t pread(int fd , void * buf ,size_t nbytes , off_t offset);
    ssize_t pwrite(int fd ,const void  * buf ,size_t nbytes ,off_t offset);
    

    上面两个函数相当于分别调用了lseek函数 和read 、 write函数,但是同时也有下列重要的区别:

    • 调用pread、pwrite时,无法中断其定位和读操作;
    • 不更新文件指针;
  • dup 、 dup2函数
    函数原型:

     #include <unistd.h>
      int dup(int fd) ; // 返回一个新的文件描述符 ,表示和fd打开同一个文件
      int dup2(int fd1,fd2); // 指定文件描述值fd2,表示和fd1打开的是同一个文件描述符,假设fd2已达开,则先关闭。
    
  • sync 、fsync 、fdatasync函数
    函数用处:
    更新缓冲,确保磁盘上实际的问价 系统与缓冲区高速缓存中内容的一致性。
    函数原型:

      #include <unistd.h>
      void sync(void); // 将所有修改过的块缓冲区排入写队列,就返回,并不等待实际的写操作;
      int fsync(int fd); // 只对fd文件指定的单一文件起作用,并且等待写操作完成之后结束;
      int fdatasync(int fd); //只对文件的数据部分。而除数据外,fsync还会更新文件属性。
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第三章 文件i/o 3.1引言 不带缓冲的io(unix系统在内核中设有缓冲区,这个不带缓冲意思是用户不自己缓冲)...
    m风满楼阅读 4,613评论 0 0
  • 1.open/close 函数原型:int open(const char *pathname,int flags...
    枯海拾贝阅读 2,144评论 0 0
  • 人最值得高兴的事:父母健在、知己两三、盗不走的爱人。其他都是假象,别计较太多。 人生就是一场修行,修的就是一颗心。...
    如果不再下雨阅读 3,269评论 0 0
  • 春风得意吹千里,流水、摇船不足奇。 已在此处有千日,桃梅不清头回记。 吴侬软语公婆比,北方朋客眷水漪。 晴空不慎浓...
    博土阅读 1,324评论 1 0
  • 三三两两,收拾行囊,我们都觉得走上了回家的路,其实,人生的路途刚刚开始。 一波又一波,我们走上月台,送着要回家乡发...
    墨墨_74f3阅读 3,685评论 0 5

友情链接更多精彩内容