怎么将内存buffer二进制数据直接写入/dev/mtd2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么将内存buffer二进制数据直接写入/dev/mtd2相关的知识,希望对你有一定的参考价值。
现有一内存buffer 里面存储有完整的二进制文件 想把它直接写入 /dev/mtd2 请问用什么方式比较好 谢谢
参考技术A 最通用的方法,不用操心具体驱动,完全使用标准文件接口,可以使用dd命令来作这件事情。先把你的内存(指针buffer)内容写入某个临时文件中
FILE
*
fp
=
fopen("/tmp/tmp.bin",
"w");
fwrite(buffer,
size,
1,
fp);
fclose(fp);
然后用系统自带的dd命令来将
tmp.bin
写入
/dev/mtd2
execlp("/bin/dd",
"dd",
"if=/tmp/tmp.bin",
"of=/dev/mtd2",
NULL);
至此打完收工,当然,我只是给你了一个骨架程序,你可以自己去调整,比方说加入错误检查,修改临时文件名字,不用exec函数而用system函数来执行dd,
另外你的系统上的dd也许不在/bin目录下,那么你也要作一些相应的修改。
java怎么将生成的文件放入内存?
我用java生成了3个csv文件,然后将它们压缩为一个zip文件,最后将它下载到本地。现在的问题是csv文件和zip文件都是在服务器上生成,完了之后还要删除,能不能直接在在内存中生成、调用?
这个要使用到内存流。BufferedOutputStream或者BufferedWriter。文件的读取和写入都应该会了吧?普通的流读写都是直接从文件中读取或者写入到文件中的,而内存流则是把文件中的内容写入到电脑内存或者是从内存中读取出来。具体的话就是把输出流替换成BufferedOutputStream或者BufferedWriter即可 参考技术A 放内存里,其实就是把读取的信息放在静态变量里随时读取这个变量就行了,只要程序在运行就一直放在内存里。
方法很多,比如定义一个全局变量,把文件信息读取进来,然后调用的时候判断这个变量是否为空,为空则加载一次文件,以后都不用加载这个文件了。 参考技术B 文件内容也存在内存中?
直接把文件内容作为二进制数组存在内存中即可。不过你想好了,很占内存的。 参考技术C 在内存生成是没有问题的
关键在于下载
你需要在处理下载的那地方,直接生成文件流,压缩,然后发给客户端,不用生成文件
以上是关于怎么将内存buffer二进制数据直接写入/dev/mtd2的主要内容,如果未能解决你的问题,请参考以下文章
Linux内存机制以及手动释放swap和buffer和cache