在一般的文件操作中,一般分为三个步骤,打开文件、操作文件、关闭文件。下面我们就安装这三个步骤讲解:
一、打开文件。
#include
#include
#include
int open(const char *path, int oflags);
int open( const char *path, int oflags, mode_t mode);
参数说明, path: 要打开的文件名
oflags: 用于指定打开文件所采取的动作
mode: 用于指定文件打开后的操作权限。
oflags,文件操作模式有大概以下几种:
1.O_RDONLY 以只读方式打开
2.O_WRONLY 以只写方式打开
3.O_RDWR 以读写方式打开
4.O_APPEND 把写入数据追加在文件的末尾
5.O_TRUNC: 把文件的长度设置为零,丢弃已有的内容。
6.O_CREAT: 如果需要,就按参数mode中给出的访问模式创建文件。
7.O_EXCL: 与O_CREAT一起使用,确保条用者创建出文件。
其中1-3为3中基础操作模式,后面4-7都需要配合前面3种使用。
mode, 当操作文件可能不存在时,需要使用oflags 6 来创建文件,而文件的各种权限则需要参数mode来申明
S_IRUSR: 读权限,文件属主
S_IWUSR: 写权限,文件属主
S_IXUSR: 执行权限,文件属主
S_IRGRP: 读权限,文件所属组
S_IWGRP: 写权限,文件所属组
S_IXGRP: 执行权限,文件所属组
S_IROTH: 读权限,其他用户
S_IWOTH: 写权限,其他用户
S_IXOTH: 执行权限,其他用户
二、文件操作
1、write 系统调用
#include
size_t write(int fildes, const void *buf, size_t nbytes);
参数说明: fildes: 文件描述符(文件句柄),指明需要操作文件的一个标识
一般是open() 返回的,或者是标准
buf: 缓存字段,用于存储操作的字符串,
nbytes: 每次缓冲的字符串的最大长度。
2、read系统调用
#include
size_t read(int fildes, void *buf, size_t nbytes);
参数说明:
参数说明:
fildes: 文件描述符(文件句柄),指明需要操作文件的一个标识
一般是open() 返回的,或者是标准
buf: 缓存字段,用于存储操作的字符串,
nbytes: 每次缓冲的字符串的最大长度。
三、文件的关闭
#include
int close(int fildes);
fildes:
文件描述符(文件句柄),指明需要操作文件的一个标识
四、其他操作
1、ioctl系统调用
#include
int ioclt(int fildes, int cmd, ...);
它提供了一个用于控制设备及其描述符行为和配置底层服务的接口。终端、文件描述符、套接字甚至磁带机都可以有为它们定义的ioctl。
使用示例,在Linux系统上对ioctl的如下嗲用讲打开键盘上的LED灯:
ioctl (tty_fd, KDSETLED, LED_NUM | LED_CAP | LED_SCR);
2、lseek系统调用
#include
#include
off_t lseek(int fildes, off_t offset, int whence);
参数说明: fildes,不再赘述。
offset, 用来指定位置(偏移量)
whence,定义offset偏移值的用法。可以有以下取值:
SEEK_SET: 绝对位置
SEEK_CUR: 相对当前位置的offset
SEEK_END: 相对文件尾的offset
3、fstat、stat和lstat系统调用
#include
#include
#include
int fstat(int fildes, struct stat *buf);
int stat(const char *path, struct stat *buf);
int lstat(const char *path, struct stat *buf);
4、dup和dup2系统调用
#include
int dup(int fildes);
int dup2(int fildes, int fildes2);