Linux操作系统提供的API
权限
可读 r 4
可写 w 2
执行 x 1
例:0600 可读可写(给文件所有者)
静态文件与动态文件
静态文件: 文件存在磁盘中
动态文件: open静态文件后,
linux内核产生一个结构体记录该文件(内存记录该文件)
read/write 都是对动态文件进行操作 close将动态文件更新到静态文件
文件描述符
Linux系统默认: 0 1 2
标准输入 标准输出 标准错误
open/creat一个文件会返回一个 文件描述符(索引作用)
open(*文件路径,权限) 打开
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
//flsgs
O_RDONLY /*只读方式打开*/
O_WRONLY /*只写方式打开*/
O_RDWR /*读写方式打开*/
O_CREAT /*若此文件不存在则创建它。使用此选项时需要提供第三个参数mode ,表示该文件的访问权限。*/
O_APPEND /*表示追加。如果文件已有内容,这次打开文件所写的数据附加到文件的末尾而不是覆盖原来的内容。*/
O_EXCL /*如果同时指定了O_CREAT,并且文件已存在,则出错返回。*/
O_TRUNC /*如果文件已存在,并且以只写或可读可写方式打开,则将其长度截断(Truncate)为0字节。*/
O_NONBLOCK /*对于设备文件,以O_NONBLOCK 方式打开可以做非阻塞I/O(Nonblock I/O)*/
write/read 写/读文件
#include<unistd.h>
ssize-t write(int fd, const void *buf, size_t count);
ssize-t read(int fd, const void *buf, size_t count);
lseek 光标定位
#include<sys/types.h>
#include<unistd.h>
off_t lseek(int fd, off_t offset, int whence);
//whence
SEEK_SET /*文件头*/
SEEK_CUR /*当前位置*/
SEEK_END /*文件尾*/
//offset 偏移值
close 关闭
#include<unistd.h>
int close(int fd);