欢迎光临
我们一直在努力

Linux系统编程——文件编程(二)

缓冲区

强制刷新缓冲区——fflush 缓存区: 设计原则:终端关联——设计行缓存 普通文件——全缓存 出错缓存——不缓存 行缓存(1024字节): 特点(刷新原则): 1.遇到\\n 2.程序正常结束 3.缓存区满 4.fflush强制刷新 全缓存(4069字节): 特点(刷新原则): 1.程序正常结束 2.缓冲区满 3.fflush强制刷新

系统调用文件编程

打开——open 读写——read/write 关闭——close

open(#include <fcntl.h>

int open (const char *pathname, int flags) 功能:打开文件 参数:@pathname 要打开的文件名 @flags 必选项: O_RDONLY 只读 O_WRONLY 只写 O_RDWR 读写 可选项: O_APPEND 追加 O_CREAT 文件不存在创造 O_TRUNC 文件存在且是普通文件并且可以写,则截断为0 在这里插入图片描述

返回值:成功返回新的文件描述符 失败返-1&&errno会被设置 注意:fopen将文件转换为fp流指针 open将文件准换为fd

close(#include<unistd.h>

int close(int fd); 功能:关闭文件描述符 关闭了的文件描述符可以被重复使用 参数:@fd 要关闭的文件描述符 返回值:成功返0,失败返-1 文件描述符分配原则:最小未使用

read

ssize_t read (int fd, void *buf,size_t count); 功能:从fd中读取count个字节存储到buf 参数:@fd 要读取的文件 @buf 保存数据的一块空间 @count 表示一次读取的字符个数 返回值:成功返回读取到字节个数 失败返回-1&&errno被设置

write

ssize_t write(int fd,const void *buf,size_t count); 功能:将count个字节从buf中写到fd中 参数:@fd 要写入的文件 @buf 保存数据的一块空间 @count 表示一次写入的字符个数 返回值:成功返回写入d字节个数 失败返回-1&&errno被设置

定位函数lseek(#include<unistd.h>

off_t lseek(int fd,off_t offset,int whence); 功能:定位偏移量 参数:@fd 要操作的文件 @offset 偏移量 @whence 参考点 SEEK_SET SEEK_CUR SEEK_END 返回值:成功返回从头开始的偏移量 失败返回-1&&errno被设置 //定位开头 lseek(fd,0,SEEK_SET); //定位结尾 off_len=lseek(fd,0,SEEK_END); len就是文件大小

标准IO与文件IO的区别

在这里插入图片描述

目录文件

#include<dirent.h> 打开——opendir 读——readdir 关闭——closedir

opendir

DIR * opendir(const char *name) 功能:打开目录并创建流指针 参数:@name 要打开的目录名 返回值:成功返目录流指针 失败返NULL

readdir

struct dirent * readdir(DIR* dirp) 功能: 读取目录项 参数: @dirp 要读取的目录流指针 返回值: 成功 目录项的一个指针 失败 NULL struct dirent { ino_t d_ino; off_t d_off; unsigned short d_reclen; unsigned char d_type; by all filesystem types char d_name[256]; };

closedir

int closedir(DIR*dirp); 功能:关闭目录流

赞(0)
未经允许不得转载:171主机测评 » Linux系统编程——文件编程(二)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址