IO学习--01

        文件IO,在程序中文件以文件描述符的形式承载,文件描述符是顺序分配的非负整数,内核用以一个表示特定进程访问的文件,也是socket、pipe的访问标识。

        文件IO不带缓存,直接调用系统内核,完成对文件的操作,不带缓存的IO函数不是ANSI C的组成部分,但是是POSIX和XPG3的组成部分。

        对于内核而言,所有打开的文件都由文件描述符引用。文件描述符是一个非负整数,当打开一个文件时,内核向进程返回一个文件描述符。当读写一个文件时,文件描述符作为参数传递给read、write等函数。Linux系统中文件描述符0、1、2常分别对应标准输出、标准输入、错误输出。

        下面我将配合代码给大家讲解关于文件IO在C中的使用(相关头文件已被隐藏)。

        

        

        上述代码创建了一个名为1.txt的普通文本文件,文件权限是664。返回值f是一个文件描述符,由于0,1,2被占用所以其为3。

        

        

        上述代码开始尝试打开2.txt文件,O_RDONLY表示以只读方式打开,如果打不开则打印错误原因,再尝试打开文件1.txt。

        

        

        上述代码使用只读的方式打开文件,之后使用write函数写入hello world,执行后通过cat命令查看也是可以看出hello world写入了文件。write实际上是覆盖性写入,将数据写入文件时会覆盖对应数据大小的原始数据。

        

        

        上述代码使用只读的方式打开文件,使用read函数对文件进行读取,需要建立一个buf保存读取的文件内容。最后我们可以看到从1.txt文件中读取到了11个字符,为hello world。

        在对文件操作中还有一个很重要的工具——文件偏移指针。一般我们打开文件时,指针的位置在文件的开头,可使用lseek对文件指针进行偏移。lseek的原型为lseek(int fd, off_t offset, int whence),第一个参数是文件描述符,第二个参数是偏移量,可以向前或者向后偏移,最后一个是文件位置(可以是当前位置SEEK_CUR、文件开头SEEK_SET、文件末尾SEEK_END)。

        

相关推荐

  1. 【Python系列-01学习路线-01基础】03变量

    2024-03-13 00:20:02       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-13 00:20:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-13 00:20:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 00:20:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 00:20:02       20 阅读

热门阅读

  1. 蚂蚁SEO蜘蛛池什么用?

    2024-03-13 00:20:02       22 阅读
  2. 什么场景只能用HTTP,不能用RPC?

    2024-03-13 00:20:02       21 阅读
  3. 深入探讨C++中的可变参数列表(Variadic Templates)

    2024-03-13 00:20:02       21 阅读
  4. C++读写锁

    2024-03-13 00:20:02       22 阅读
  5. 《1w实盘and大盘基金预测 day1》

    2024-03-13 00:20:02       19 阅读
  6. React受控组件和非受控组件区别及应用场景。

    2024-03-13 00:20:02       21 阅读
  7. Mysql中有多少种锁

    2024-03-13 00:20:02       21 阅读
  8. Qt提高-线程池QThreadPool 详解

    2024-03-13 00:20:02       26 阅读