一、Linux文件描述符
一个进程启动,都会打开三个文件:
1、STDIN_FILENO - 0
2、STDOUT_FILLENO -1
3、STDERR_FILENO -2
二、不带缓存的I/O操作(iint fd)
1、fd = int open(const char * pathname,int flags)
flags:
O_RDONLY 只读方式打开
O_WRONLY 只写方式打开
O_RDWR 读写方式打开
O_CREAT 若文件不存在则自动创建文件
O_CREATE | O_EXCL 检查文件是否存在,不存在则创建,存在则报错。
O_TRUNC 将文件清空打开
2、close(int fd) fd -- 文件描述符
3、read(int fd,void * buf, size_t count)
将文件中count字节大小的内容读取到缓冲区buf中,成功返回实际读到的字节数,失败返回-1。
4、write(int fd,void * buf,size_t count)
将缓冲区中的内容count 个字节写入到文件中,成功返回实际写入的字节数,失败返回-1。
5、lseek(int fd,offset_t offset,int where)
用于移动文件的读写位置。将文件的读写位置相对于where移动offset个字节。
where:
SEEK_SET:相对文件开头
SEEK_CUR:相对文件读写指针当前的位置
SEEK_END:相对文件尾部
三、带缓存的I/O操作(FILE * fd)
1、fd = fopen(const char * pathname,const char * mode)
mode:
r:只读方式 文件必须存在
w:只写,文件不存在则自动创建,且文件清空
r+:允许读写,文件必须存在
w+:允许读写,不存在则创建
2、fclose(FILE * fd)
3、fread(void * buffer,size_t size,size_t n,FILE * fd)
将文件中的内容读取n个大小为size的数据到buffer,成功返回实际读的字段数,失败返回-1。
4、fwrite(void * buffer,size_t size,size_t n,FILE * fd)
将buffer中n个字段size大小的数据写入到文件中,成功返回实际写的字段数,失败返回-1。
5、fseek(FILE * fd,long offset,int where)
同上 lseek()
6、fgetc(FILE * fd)
从文件中一个字符一个字符的读取。
7、fputc(int c,FILE * fd)
向文件中写入一个字符。