Linux文件编程学习

2020年1月9日03:32:11
评论

在Linux平台下对文件编程可以使用两类函数:(1)Linux操作系统文件API;(2)C语言I/O库函数。 前者依赖于Linux系统调用,后者实际上与操作系统是独立的,因为在任何操作系统下,使用C语言I/O库函数操作文件的方法都是相同的

Linux文件API

Linux的文件操作API涉及到创建、打开、读写和关闭文件。

open函数有两个形式,其中pathname是我们要打开的文件名(包含路径名称,缺省是认为在当前路径下面),flags可以去下面的一个值或者是几个值的组合:

标志 含义

O_RDONLY 以只读的方式打开文件

O_WRONLY 以只写的方式打开文件

O_RDWR 以读写的方式打开文件

O_APPEND 以追加的方式打开文件

O_CREAT 创建一个文件

O_EXEC 如果使用了O_CREAT而且文件已经存在,就会发生一个错误

O_NOBLOCK 以非阻塞的方式打开一个文件

O_TRUNC 如果文件已经存在,则删除文件的内容

O_RDONLY、O_WRONLY、O_RDWR三个标志只能使用任意的一个。

如果使用了O_CREATE标志,则使用的函数是int open(const char *pathname,int flags,mode_t mode); 这个时候我们还要指定mode标志,用来表示文件的访问权限。mode可以是以下情况的组合:

标志 含义

S_IRUSR 用户可以读

S_IWUSR 用户可以写

S_IXUSR 用户可以执行

S_IRWXU 用户可以读、写、执行

S_IRGRP 组可以读

S_IWGRP 组可以写

S_IXGRP 组可以执行

S_IRWXG 组可以读写执行

S_IROTH 其他人可以读

S_IWOTH 其他人可以写

S_IXOTH 其他人可以执行

S_IRWXO 其他人可以读、写、执行

S_ISUID 设置用户执行ID

S_ISGID 设置组的执行ID

除了可以通过上述宏进行“或”逻辑产生标志以外,我们也可以自己用数字来表示,Linux总共用5个数字来表示文件的各种权限:第一位表示设置用户ID;第二位表示设置组ID;第三位表示用户自己的权限位;第四位表示组的权限;最后一位表示其他人的权限。每个数字可以取1(执行权限)、2(写权限)、4(读权限)、0(无)或者是这些值的和。

企鹅博客
  • 本文由 发表于 2020年1月9日03:32:11
  • 转载请务必保留本文链接:https://www.qieseo.com/131953.html

发表评论