嵌入式系统软件设计VxWorks【第5章】文件及IO操作_第1页
嵌入式系统软件设计VxWorks【第5章】文件及IO操作_第2页
嵌入式系统软件设计VxWorks【第5章】文件及IO操作_第3页
嵌入式系统软件设计VxWorks【第5章】文件及IO操作_第4页
嵌入式系统软件设计VxWorks【第5章】文件及IO操作_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【第5章】文件及IO操作 邹昕光 哈尔滨工业大学自动化测试与控制研究所 2012 课程内容 嵌入式系统文件访问的需求 基本IO操作函数 带缓冲的文件IO操作函数 高级文件IO操作 嵌入式系统文件访问需求 配置文件能给嵌入式系统应用带来灵活性; 环境参数; 常量值; 用户偏好; 嵌入式系统采集的数据可以以文件形式存储; 数据采集; 事件记录; 错误导出。 基本IO操作函数 open write read close 头文件 open int open(const char *filename, int flags, mode_t mode) 打开一个文件; 【参数】 filename: 待打开文

2、件的文件名; flags: 文件打开的方式; mode: 文件访问权限 【返回值】 如果打开成功,返回文件描述符; 如果打开失败,ERROR; open flags O_RDONLY 以只读方式打开; O_WRONLY 以只写方式打开; O_RDWR 以读写方式打开; O_CREATE 如果文件不存在则创建文件; O_APPEND 打开后保证文件偏移指针置于文件位 ,对文件写操作总是在文件后增加内容。对设备不 起作用。 O_TRUNC 如果文件是正规文件,则打开后文件长 度变为0,。对设备不起作用。 read int read(int fd, char *buffer, size_t maxb

3、ytes) 从文件或设备中读取数据; 【参数】 fd: 文件描述符; buffer: 指向接收数据缓存的指针; maxbytes: 读入缓存的最大数据量 【返回值】 成功返回实际读取的字节数,小于等于maxbytes; 如果读到文件尾返回0; 失败返回ERROR; write int write(int fd, char *buffer, size_t nbytes) 向文件中写入数据; 【参数】 fd: 文件描述符; buffer: 指向待写入数据缓存的指针; nbytes: 写入数据的长度 【返回值】 成功返回写入的字节数(对于正规文件,返回字节数 总是等于nbytes),否则出错; 失败

4、返回ERROR; close STATUS close(int fd) 关闭文件; 【参数】 fd: 文件描述符; 【返回值】 成功,返回底层驱动函数的状态; 失败,返回ERROR; ioctl int ioctl(int fd, int function, ) 指向IO控制功能; 【参数】 fd: 文件描述符; function: 功能码; 【返回值】 成功,返回底层驱动函数的状态; 失败,返回ERROR; 例子 writeFileDemo readFileDemo ioctlDemo 带缓冲的文件IO操作函数 C-Runtime Library提供一套文件操作函数; 使用时需要包含头文件

5、常用文件操作函数 fopen fclose fputs fgets fread fwrite 文件操作函数 常用文件操作函数(续) fseek feof ferror perror fopen FILE *fopen(const char *filename, const char *mode) 打开一个文件; 【参数】 filename: 待打开文件的文件名; mode: 文件打开的方式; 【返回值】 如果打开成功,返回指向打开文件的指针; 如果打开失败,返回值为NULL,并设置全局变量 errno为EINVAL; fopen 【说明】 常用的mode值 “r” 将文件以读方式打开,如果文件

6、不存在或找不到, 调用失败; “w” 将文件以写方式打开,如果文件存在,则文件 原来的内容被清空;如果文件不存在,则创建文件; “t” 以文本文件方式打开; “b” 以二进制文件方式打开 fopen 【示例】 FILE* stream1 = NULL; FILE* stream2 = NULL; stream1 = fopen(“textfile.txt”, “wt”); stream2 = fopen(binfile.bin, rb); fclose int fclose( FILE* stream) 关闭文件 【参数】 stream: 指向待关闭文件的指针; 【返回值】 如果成功关闭返回0

7、; 如果关闭失败返回EOF。 fclose 【示例】 fclose(stream1); fclose(stream2); fputs int fputs(const char* str, FILE* stream) 将一个字符串写入文件; 【参数】 str: 待写入的字符串; stream: 指向打开文件的指针; 【返回值】 如果成功返回一个非负值; 如果失败返回EOF。 fputs 【示例】 fputs(“Embedded System Configurationsn”, stream); fgets char* fgets(char *str, int n, FILE *stream) 从

8、文件中读出一个字符串; 【参数】 str: 存储读出的字符串; n: 期望读出的最大字符数; stream: 指向打开文件的指针; 【返回值】 成功调用返回str; 调用失败或遇到文件尾返回NULL; fgets 【说明】 fgets试图读入n个字符; fgets停止读取的判断条件为 如果遇到换行符; 如果读到文件尾; 如果读到n-1个字符; 在读到的字符串后在添加结束符0。 fgets 【示例】 打印5行配置信 息; 假定每行配置信 息的字符数不超 过100字节。 char config100; int itemCount = 0; while(!feof(stream) fgets(config, 100, stream); if(ferror(stream) perror(read failed); break; if(item

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论