android MemeoryFile和Parcel操作文件描述符fd
ParcelFileDescriptor pfd;
FileDescriptor fd;
Parcel p;
static byte[] testString = new byte[] {1,2,3,4,5,6,7,8,9};
byte[] buffer = new byte[testString.length];
MemoryFile file = new MemoryFile("test", 64);//创建匿名共享内存
public static void printHexString( byte[] b){
for(int i = 0; i< b.length; i++){
String hex = Interger.toHexString(b[i] & 0xFF);
if(hex.length() == 1){
hex = '0' + hex;
}
Log.e(TAG,"print :" + new String(hex.toUpperCase()));
}
Log.e(TAG,"print end \n\n\n");
}
Setup 1:写文件描述符fd
pfd = new ParcelFileDescriptor(file.getFileDescriptor());//获取文件描述符
fd = pfd.getFileDescriptor();
file.writeBytes(testString, 0, 0, testString.length);//向匿名共享内存写数据
file.readBytes(buffer, 0, 0, testString.length);//从ashmem读数据
printHexString(testString);//打印写入ashmem的数据
printHexString(buffer);//打印从ashmem读出的数据
p = Parcel.obtain();//Parcel类序列化操作
p.writeFileDescriptor(fd);//写文件描述符
Setup 2:读文件描述符和共享内存数据
p.setDataPosition(0);
pfd = p.readFileDescriptor();
fd = pfd.getFileDescriptor();//读取Setup 1的文件描述符fd
MemoryFile rfd = new MemoryFile(fd, testString.length, "r");//从fd描述符后,建立映射
byte[] buf = new byte[9];
rfd.readBytes(buf, 0, 0, testString.length);//读取ashmem的数据
printHexString(buf);//打印验证
file.close();
android MemeoryFile和Parcel操作文件描述符fd相关推荐
- Linux学习笔记6 文件操作——文件描述符
基于文件描述符的文件操作 进程一启动,内核就打开了三个描述符,0(标准输入 STDIN),1(标准输出STDOUT), 2(标准错误输出STDERR).Linux用整形数做文件操作,因此称为文件描述符 ...
- linux文件描述符与标识符,文件描述符fd
这里以问答的方式来讨论这个问题: 1. 文件描述符 fd 和文件指针 FILE *的关系? 文件描述符是什么?我们知道每一个进程都有一个自己的PCB(进程控制块),进程控制块的结构是: struct ...
- linux存储--文件描述符fd与FILE结构体(二)
文件描述符fd 对于linux而言,所有对设备(对于linux而言,一切皆文件)和文件的操作都使用文件描述符来进行的. 文件描述符是一个非负的整数,它是一个索引值,指向内核中每个进程打开文件的记录表. ...
- [转]文件IO详解(二)---文件描述符(fd)和inode号的关系
原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...
- linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析
本文研究的主要是Linux中文件描述符fd与文件指针FILE*互相转换的相关内容,具体介绍如下. 1.文件描述符fd的定义:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进 ...
- 存储基础 — 文件描述符 fd 究竟是什么?
坚持思考,就会很酷 前情概要 通过上篇 Go 存储基础 - 文件 IO 的姿势, 我们看到有两种文件读写的方式,一种是系统调用的方式,操作的对象是一个整数 fd,另一种是 Go 标准库自己封装的标准库 ...
- 文件描述符fd和文件指针File* fp的区别和转换
在linux系统中把设备和普通文件也都看做是文件,要对文件进行操作就必须先打开文件,打开文件后会得到一个文件描述符,它是一个很小的正整数,是一个索引值. 内核会为每一个运行中的进程在进程控制块pcb ...
- linux文件描述符泄漏,文件描述符(fd)泄漏排查一篇就够了
生产多次遇到文件描述符(fd)泄露相关的问题, 文件描述符泄漏一般引起 的现象是文件句柄数(封面图)/tcp alloc(上图)增长.文章分为两部分介绍文件描述符相关内容,第一部分介绍文件描述基础知识 ...
- <Linux基础--文件描述符fd、重定向、文件流指针FILE*概念理解>
文章目录 1.文件描述符fd 2.重定向 3.文件流指针:FILE* 4.动态库和静态库 1.文件描述符fd 文件描述符:实际上就是内核中一个进程打开的文件描述信息数组(file* fd_array[ ...
最新文章
- python读取文件with open_python 文件读写操作open和with的用法
- 高科技的计算机作文,高科技的作文范文400字
- 教师要合理使用计算机,教师学习计算机应用基础总结
- VBA 脚本快速copyExcel单元格的格式
- UWP开发---通过委托跨页面导航
- Android VideoView播放视频遇到的问题
- delphi OleVariant转换RecordSet
- 一文普及工业控制、PLC
- 9款超级好用的在线PDF工具!
- polyval matlab 怎么用,matlab polyfit polyval
- 偏微分方程离散化matlab,[数学]偏微分方程的离散化方法4.ppt
- android 涨水的动画,Android -- 贝塞尔实现水波纹动画(划重点!!)
- 渗透测试 - KALI Linux 学习 - kali linux如何启动METASPLOIT服务
- 软件测试-软件测试总结
- 使用WinRT OCR API的WPF中的OCR
- 开场白——第一篇博客
- 力扣解法汇总553-最优除法
- 在中国要想发财的22条秘诀!
- 角速度的相似变换定理的证明
- 皮革行业分销渠道管理系统有效缩短供销链,提升渠道运营收益
热门文章
- html进阶css(5)
- iOS的一些小技巧[转]
- Raid、lvm知识
- POJ-1163(DP,Water)
- HTML和CSS是什么玩意儿
- 服务器共享文件有访问台数限制,Win7/xp系统下共享文件夹最大连接数限制怎么解除...
- 深度学习 --- BP算法详解(误差反向传播算法)
- .net core linux服务,.netcore在linux服务生成
- mysql导入报错1071_导入sql文件报错:1071 Specified key was too long; max key length is 767 bytes...
- mysql /!/_Mysql(一)