首页 > 其他 > 详细

文件/系统IO

时间:2021-04-08 20:34:34      阅读:22      评论:0      收藏:0      [点我收藏+]

1、文件描述符:

      是已打开的文件的标志,是一个非负整型数,当前可用最小作为新打开文件的文件描述符,范围默认是0 ~1024。

2、文件的打开:

      int open(const char *path, itn flag,int mode);

          path:要打开文件的路径。

          flag:打开方式。 包括  O_RDONLY   /   O_WRONLY  /   O_RDWR  这三个必选一个。

                            O_CREAT  /    O_TRUNC  /   O_APPEND    创建,截断和追加

          mode:文件不存在需要创建文件时,mode是设置的权限    创建的文件实际的权限 = mode & ~umask  只有

          返回值:成功返回文件描述符, 失败返回 -1 并且会设置errno的值。

3、读文件:

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

          fd: 待读取的文件的文件描述符。

          buf: 存储读到的数据。

          size: buf的大小(BUFSIZE)

          返回值: 成功返回读到的字节个数,失败返回 -1   如果返回值是0,就说明读到了文件的末尾。

4、写文件:

    int write(int fd, const void *buf, int size);

          fd: 要写入的文件

          buf: 存储待写入的数据

          size :待写入的字节个数(读到多少写多少)

          返回值:成功返回写入的字节个数,失败返回-1

5、设置文件的偏移量:

    int lseek(int fd, offset_t n, int whence);

          fd : 要给哪个文件设置偏移量

          n: 要偏移的字节个数

          whence: 从文件的哪个位置开始偏移。

          返回值:返回当前文件的偏移量。

6、关闭文件:

    int close(int fd);

          fd:要关闭的文件的文件描述符。

7、IO效率:

    read 和 write函数的第二个参数(buf (BUFSIZE)),BUFSIZE的大小选择1024~4096 这个区间是最优的。

8、文件共享:

    UNIX系统支持在不同进程间共享打开的文件。

          进程表项 : 包括文件状态标志,一个指针(指向文件表项)

          文件表项 : 只有打开文件时才有,一个文件打开一次就会有一个文件表项,同一个文件打开多次也会有多个文件表项。

                文件表项也是 一个结构体类型,文件表项里有这样几个成员:①文件的打开方式(只读、只写、读写)②文件的偏移量。 ③一个指针 (指向V结点表项)

                                    V结点表项:V结点表项当中存放的是一些文件的信息,如文件的长度,权限等等。

             进程表项里有一个指针,这个指针指向文件表项,而文件表项里有一个V结点指针,它将指向对应的V结点表项。

                  给我们用户返回的是进程表项这个数组的下标值,我们将这个下标值称为文件描述符

9、文件描述符的复制(重定向)

     ① int dup(int oldfd); 当前可用最小的文件描述符作为oldfd的复制。

     ② int dup2(int oldfd, int newfd);   如果newfd被占用了,就先关闭newfd,再作为oldfd的复制  

10、fcntl(int fd,int cmd,)能够改变已打开文件的性质  只有在设置的时候才有第3个参数,获得是没有的。

      五个功能:

          ①复制一个现有的文件描述符

          ②获得/设置文件描述符标记

          ③获得/设置文件状态标志

          ④获得/设置异步IO所有权

          ⑤获得/设置记录锁   

          cmd 值的种类:(共有10 种) F_DUPFD  ——  复制文件描述符,新文件描述符作为返回值返回

                   O_NONBLOCK ——  非阻塞模式。

 

          

          

 

文件/系统IO

原文:https://www.cnblogs.com/HXH21/p/14633895.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!