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>
函数原型 :
参数说明:这个比较明显,就不说了,后面用实例说明即可。
这个应用场合较多,比如有些文件不支持内存操作,但是支持文件操作的。
代码:
- #include <string.h>
- #include <stdio.h>
- static char buff[] = "Mayuyu is from Japan";
- int main(int argc, char **argv)
- {
- int len = strlen(buff);
- FILE *fd = fmemopen(buff, len, "r");
- if(fd == NULL)
- {
- printf("get file error!\n");
- return -1;
- }
- char ch;
- while((ch = fgetc(fd)) != EOF)
- printf("%c", ch);
- puts("");
- fclose(fd);
- return 0;
- }
转载于:https://www.cnblogs.com/bonelee/p/6568011.html
linux编程 fmemopen函数打开一个内存流 使用FILE指针进行读写访问相关推荐
- python通过内置的什么函数打开一个文件_利用python进行文件操作
这篇文章主要介绍了如何利用python进行文件操作,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 什么是文件 文件是系统存储区域的一个命名位置,用来存储一些信息,便于后续访问.能够在非 ...
- linux 已打开文件图标管理,Linux_没有启动图标利用Linux命令在终端打开文件, 在Linux系统中,打开一个 - phpStudy...
没有启动图标利用Linux命令在终端打开文件 在Linux系统中,打开一个文件很简单,只要有启动图标就可以了,但是如果没有启动图标的话要如何在终端下打开文件呢?使用命令就能很好的解决这个问题,下面小编 ...
- 【Java基础】Java IO编程:输入输出流、内存流、打印流、缓冲流BufferedReader、扫描流Scanner、序列化与反序列化
文章目录 第11章.Java IO编程 11.1 文件操作类:File 11.2 字节流与字符流 字节输出流:OutputStream OutputStream类 FileOutputStream类 ...
- linux 编程--prctl()函数应用
int prctl ( int option,unsigned long arg2,unsigned long arg3,unsigned long arg4,unsigned long arg5 ) ...
- linux编程-open函数和write函数实现copy命令
文章目录 文件描述符 文件描述符 所有的I/O操作的系统调用都以文件描述符,一个非负整数(通常是小整数),来指代打开的文件. open函数打开pathname所标识的文件,并返回文件描述文件描述符 ...
- matlab中screen函数,14 用 Screen 函数打开一个窗口
从今天开始,我打算边解释 PTB 自带的 demo 程序,边讲解一些涉及到的知识点,这样进度会快一点. PTB 的 demo 可以在 Psychtoolbox Demos 网站上获取.另外,在安装目录 ...
- 关于Linux下C语言编程execvp函数的一个问题
在实现linux管道命令的shell程序的时候,在主函数里面创建了两个子进程,l都调用了execvp函数来执行命令,但是很奇怪的是,当命令可以执行的时候,程序正常执行,子进程也是每次都正常退出,但是如 ...
- linux 启动tomcat 怎么显示日志文件,随着LINUX的启动,打开一个终端显示TOMCAT的日志文件,请问如何做到?...
FC7下已配置好TOMCAT 5能自动随系统的启动而启动! 我在FC7系统启动完成后自动弹出一个终端,并其中执行命令tail -f rootDownloadjakarta5.0.28logscatal ...
- Linux编程signal函数使用
题目: 编写一段程序,使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按ctrl+c键),当捕捉到中断信号后,父进程用系统调用kill( )向 ...
最新文章
- Tech ED的课程和动手实验营讲义已经发布,需要的赶紧去下载
- Webstorm常用快捷键备忘(Webstorm入门指南)
- 在Windows上运行-XX:CompileCommand
- nginx 直接在配置文章中设置日志分割
- GY歌谣之读懂每行代码(飞智)
- 用 Python 分析网易严选 Bra 销售信息,告诉你她们真实的 Size
- kafka性能高的影响因素
- DVWA high暴力破解
- 无人驾驶全局路径规划之RRT算法
- Cuda驱动安装/更新
- 安装软件,python安装,node.js安装,pycharm安装,vscode安装,PR, PS, LR.AE Windows开关机等,雪崩的时候没有一片雪花儿是无辜的
- 如何利用Python编程批量处理Excel来提高日常工作效率!
- Java 设置系统参数和运行参数
- 塞尔达传说-荒野之息 体验复盘
- UE4 安卓手机launch报错
- 历数马化腾早年的赚钱经历。
- JavaScript高级(三)
- 真正会赚钱的人,都有什么样的思维?
- 21天学会Java之(Java SE第十三篇):网络编程、TCP/UDP通信
- C语言魔塔视频百度云,原创 C语言版魔塔
热门文章
- ajax回调函数ifelse,实现AJAX及用Promise解决回调函数命名问题
- linux yum 安装mysql_Linux下使用yum安装MySQL
- iphone日历怎么跳转日期_晚上别调手表日期!手表调节日历的禁区!
- vscode 默认初始化_VSCode设置初始化模板
- 感觉 asp.net mvc开发好难啊_青岛开发区晟创广告公司
- iphone彻底删除照片如何恢复_如何把删除的照片恢复?轻松解决恢复问题!
- mysql phpwind_【phpwind教程:Linux Apache php MySQL GD PHPWind 集成环境配置】-phpwind教程-【零度中国】...
- hyfsoft java_Java自动化测试框架-04 - 来给你的测试报告化个妆整个形 - (上)(详细教程)...
- java文件服务器开源,附架构师必备技术详解
- 【编译原理】关于NFA和DFA-集合定义的探索