linux编程 fmemopen函数打开一个内存流 使用FILE指针进行读写访问

简介:

fmemopen()函数打开一个内存流,使你可以读取或写入由buf指定的缓冲区。其返回FILE*fp就是打开的内存流,虽然仍使用FILE指针进行访问,但其实并没有底层文件(并没有磁盘上的实际文件,因为打开的内存流fp是在内存中的),所有的I/O都是通过在缓冲区与主存(就是内存)之间来回传送字节来完成的。 

使用第三方库的时候,很可能遇到这样的问题,我们需要处理某个文件,而这个文件不一定是从本地磁盘上读取,可能是分布式文件系统或者其他地方,而第三方库的接口却只提供了一个File *参数,意味着只能从磁盘加载,没法直接处理已经加载到内存的数据。

这个时候,fmemopen就可以派上用场了,完美的将FILE对象映射到内存上,无需从磁盘上读取了。fmemopen的函数签名很简单,如下:

FILE *fmemopen(void *buf, size_t size, const char *mode);

头文件:#include <stdio.h>

 

函数原型 : 

 

参数说明:这个比较明显,就不说了,后面用实例说明即可。

 

这个应用场合较多,比如有些文件不支持内存操作,但是支持文件操作的。

 

代码:

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. #include <string.h>  
  2. #include <stdio.h>  
  3.   
  4. static char buff[] = "Mayuyu is from Japan";  
  5.   
  6. int main(int argc, char **argv)  
  7. {  
  8.     int len = strlen(buff);  
  9.     FILE *fd = fmemopen(buff, len, "r");  
  10.     if(fd == NULL)  
  11.     {  
  12.         printf("get file error!\n");  
  13.         return -1;  
  14.     }  
  15.   
  16.     char ch;  
  17.     while((ch = fgetc(fd)) != EOF)  
  18.         printf("%c", ch);  
  19.     puts("");  
  20.   
  21.     fclose(fd);  
  22.   
  23.     return 0;  
  24. }  













本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6568011.html ,如需转载请自行联系原作者

相关文章
|
17天前
|
Linux
关于Linux目录访问函数总结
关于Linux目录访问函数总结
13 1
|
23天前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
29 0
|
15天前
|
搜索推荐 C语言 C++
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现3
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现
|
23天前
|
存储 算法 Linux
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
54 5
|
23天前
|
存储 算法 Linux
【Linux系统编程】深入理解Linux目录扫描函数:scandir目录函数(按条件扫描目录
【Linux系统编程】深入理解Linux目录扫描函数:scandir目录函数(按条件扫描目录
37 0
|
23天前
|
存储 算法 Linux
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
36 0
|
11天前
|
Prometheus 监控 Cloud Native
【Linux】查看系统内存命令(详细讲解)
【Linux】查看系统内存命令(详细讲解)
|
15天前
|
存储 缓存 监控
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
|
17天前
|
传感器 Linux API
嵌入式Linux串口编程简介
嵌入式Linux串口编程简介
15 1
|
17天前
|
Linux 测试技术 C语言
【Linux】应用编程之C语言文件操作
【Linux】应用编程之C语言文件操作