open,creat,close,write,read,lseek
Linux哲学:“一切皆文件”
open函数
open函数原型
int open(const char *path, int oflags);
int open(const char *path, int oflags,mode_t mode);
- path ,路径名或文件名;
- oflags,打开文件所采取的动作;
下面三个参数必选其中一个:
参数 | 作用 |
---|---|
O_RDONLY | 文件只读 |
O_WRONLY | 文件只写 |
O_RDWR | 文件可读可写 |
下面参数任选:
参数 | 作用 |
---|---|
O_APPEND | 每次写操作都写入文件的末尾 |
O_CREAT | 如果指定文件不存在,则创建这个文件 |
O_EXCL | 如果要创建的文件已存在,则返回 -1,并且修改 errno 的值 |
O_TRUNC | 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容 |
O_NOCTTY | 如果路径名指向终端设备,不要把这个设备用作控制终端 |
O_NONBLOCK | 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O |
3.mode,设置创建文件的权限。
creat函数
creat函数原型如下:
int creat(const char * pathname, mode_t mode);
1.pathname,路径名或文件名;
2.mode,设置创建文件的权限。
close函数
任何一个文件操作之后都需要关闭,调用close函数后,会取消open函数建立的映射关系。
函数原型:int close(int fd)
fd,使用open函数后的返回的文件描述符
write函数
ssize_t write(int fd,const void *buf,size_t count);
- fd,文件描述符
- *buf,需要写入的数据
- count,buf中需要写入的字节数
read函数
ssize_t read(int fd,void *buf,size_t len);
- fd,使用 open 函数打开文件之后返回的句柄
- *buf,读出的数据保存的位置
- len,每次最多读 len 个字节
返回值为 ssize 类型,出错会返回-1,其它数值表示实际写入的字节数,返回值大于 0 小于 len 的数值都是正常的。
lseek 函数
每个打开文件都有一个与其相关的“当前文件偏移量”。
off_t lseek(int fd, off_t offset, int whence);
whence的参数如下:
参数 作用 | |
---|---|
SEEK_SET | 将该文件的偏移量设置为距文件开始处offset个字节 |
SEEK_CUR | 将该文件的偏移量设置为其当前值加offset,offset可为正或负 |
SEEK_END | 将该文件的偏移量设置为文件长度加offset,offset可正可负 |