微网站后台录入,wordpress前台版权,wordpress 遍历文章,wordpress播放器代码文章目录 前言open参数flags参数mode writereadclose 前言
当用户想要向磁盘中的文件读写数据#xff0c;就必须要得到操作系统的允许。同样#xff0c;操作系统为了能让用户去对文件进行打开、读写、关闭等操作#xff0c;向上提供了相应的系统调用的接口。C、JAVA、C等语… 文章目录 前言open参数flags参数mode writereadclose 前言
当用户想要向磁盘中的文件读写数据就必须要得到操作系统的允许。同样操作系统为了能让用户去对文件进行打开、读写、关闭等操作向上提供了相应的系统调用的接口。C、JAVA、C等语言它们对这些系统调用进行了封装虽然各个函数看起来不一样但是本质是都是在使用操作系统提供的系统调用。 接下来我们来介绍这些系统调用的接口。
open
用于打开一个文件并返回一个文件描述符。open()系统调用可以指定文件名、访问模式读、写、追加等以及权限等参数。 open函数可以以flag的方式打开某个文件如果文件不存在就会创建一个新的文件。 pathname表示文件的路径名也可以是一个文件名这样会默认在当前进程路径下打开或者创建。 flags表示打开文件的方式选项参见选项有 O_WRONLY:只写打开 O_CREAT文件不存在时创建文件 O_RDONLY:只读打开 O_RDWR:读写方打开 O_APPEND:追加方式打开 O_TRUNC:清空文件,重新写入 参数mode表示的是创建文件时的初始化权限编码会被umask影响。 参数flags 参数flags可以允许选项多个组合搭配。例如O_WRONLY|O_CREAT|O_TRUNC表示的就是以写的方式打开如果之前文件不存在则创建文件并且打开文件后清空文件中的所有内容。相当于C语言中的w文件操作。 为什么这些选项用或|起来就能实现组合呢 参数int flags表示的实际上是一个32位二进制的位图位图(Bitmap)是一种基于位操作的数据结构,用于表示一组元素的集合信息。位图中的每个二进制位都表示着某个元素是否在集合中。当然实际上可能不会用到这么多位。 比如宏O_WRONLY假设表示的是2即10二进制O_CREAT表示4即100二进制。那么O_WDONLY|O_CREAT110(二进制)。在open函数内部就会有相应的机制监测flags的二进制位哪些是1再分别对应其代表的功能。 参数mode
mode参数表示的是四个八进制位的数一般取后三位表示文件的权限.例如0666取666用二进制表示的就是110 110 110分别对应文件的拥有者、所属组、其他人的权限。
如果没有设置mode,那么创建出来的文件权限可能就会出现问题。
例如我们用以下代码创建一个原本不存在的文件 结果文件权限都出现了乱码。 所以一般我们要创建新文件的时候都需要带上mode参数。
于是我们删掉log.txt文件再加上参数mode: mode0666。新建出来的文件权限就变成了rw-rw-r--对应的权限编码为664.这是因为我们的umask默认为002也就是过滤掉了“其他人”的w权限所以得到的最终文件权限编码是664。 对文件权限部分不太理解的同学可以去看我之前的博客 超详细讲解linux的文件权限及操作
write
用于向文件中写入数据。通过指定文件描述符、数据来源的缓冲区地址和要写入的字节数可以将数据写入到文件中。如果写入失败则返回-1否则返回写入的字节数 fd表示的是文件标识符 buf表示的是数据的地址 count表示的是字节数 ssize_t类型表示有符号整型输出格式为%ud. read
用于从文件中读取数据。通过指定文件描述符、缓冲区地址和读取的字节数可以将文件中的数据读取到缓冲区中。读取成功返回读取的字节数否则返回-1. fd表示文件标识符 buf表示数据从文件中输出到的地址 count期望要读取的字节数 close
用于关闭一个文件描述符释放系统资源。在文件操作完成后应该及时关闭文件描述符以防资源泄漏。关闭成功返回0,否则返回-1.