linux文件描述符-open、write、read、close
open操作符:
打开文件 open, creat - open and possibly create a file ordevice(打开、创建-打开并可能创建文件或设备)
头文件:
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
函数结构:
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
-
Pathname:文件名 ;
-
flags:打开的方式(O_RDONLY只读-O_WRONLY只写-O_RDWR读写-O_APPEND 追加);
-
mode:创建文件时,指定文件的权限(0XXX);
-
返回值:-1 出错
write操作符
头文件:
#include <unistd.h>
函数结构:
ssize_t write(int fd, const void *buf, size_t count);
-
fd:写入的对象,open打开的文件;
-
buf:写入数据的起始位置;
-
size_t count:写入数据的长度(字节);
-
返回值:出错-1 写入数据的长度byte
read操作符:
头文件:
#include <unistd.h>
函数结构:
ssize_t read(int fd, void *buf, size_t count);
-
fd:读取的文件,由open的返回值指定;
-
buf:指定读取的数据存储的起始位置;
-
size:指定一次最多读取的字节个数(一般为缓冲区大小,size<=缓冲区大小);
-
返回值:出错-1 返回读到的数据字节数
close操作符:
头文件:
#include <unistd.h>
函数结构:
int close(int fd);
-
fd:指定的文件表示符
-
返回值:-1 出错 0 正确
lseek操作符(移动读写偏移量):
头文件:
#include <sys/types.h>
#include <unistd.h>
函数结构:
off_t lseek(int fd, int size, int flag);
-
fd:操作的文件
-
size:移动的大小
-
flag:移动标记(移动的起始位置)SEEK_SET(开始位置)、SEEK_CUR(当前位置)、SEEK_END(结束为止);
例题1:利用文件,创作一个新的文件,并且打印里面的内容;
代码示例:
执行结果:
例题2:利用文件操作函数实现普通文件的拷贝
(将源文件的内容拷贝到新的文件)
代码示例:
打印结果:
欢迎大家评论指导!