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相关推荐

  1. Linux学习笔记6 文件操作——文件描述符

    基于文件描述符的文件操作 进程一启动,内核就打开了三个描述符,0(标准输入 STDIN),1(标准输出STDOUT), 2(标准错误输出STDERR).Linux用整形数做文件操作,因此称为文件描述符 ...

  2. linux文件描述符与标识符,文件描述符fd

    这里以问答的方式来讨论这个问题: 1. 文件描述符 fd 和文件指针 FILE *的关系? 文件描述符是什么?我们知道每一个进程都有一个自己的PCB(进程控制块),进程控制块的结构是: struct ...

  3. linux存储--文件描述符fd与FILE结构体(二)

    文件描述符fd 对于linux而言,所有对设备(对于linux而言,一切皆文件)和文件的操作都使用文件描述符来进行的. 文件描述符是一个非负的整数,它是一个索引值,指向内核中每个进程打开文件的记录表. ...

  4. [转]文件IO详解(二)---文件描述符(fd)和inode号的关系

    原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...

  5. linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析

    本文研究的主要是Linux中文件描述符fd与文件指针FILE*互相转换的相关内容,具体介绍如下. 1.文件描述符fd的定义:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进 ...

  6. 存储基础 — 文件描述符 fd 究竟是什么?

    坚持思考,就会很酷 前情概要 通过上篇 Go 存储基础 - 文件 IO 的姿势, 我们看到有两种文件读写的方式,一种是系统调用的方式,操作的对象是一个整数 fd,另一种是 Go 标准库自己封装的标准库 ...

  7. 文件描述符fd和文件指针File* fp的区别和转换

    在linux系统中把设备和普通文件也都看做是文件,要对文件进行操作就必须先打开文件,打开文件后会得到一个文件描述符,它是一个很小的正整数,是一个索引值.  内核会为每一个运行中的进程在进程控制块pcb ...

  8. linux文件描述符泄漏,文件描述符(fd)泄漏排查一篇就够了

    生产多次遇到文件描述符(fd)泄露相关的问题, 文件描述符泄漏一般引起 的现象是文件句柄数(封面图)/tcp alloc(上图)增长.文章分为两部分介绍文件描述符相关内容,第一部分介绍文件描述基础知识 ...

  9. <Linux基础--文件描述符fd、重定向、文件流指针FILE*概念理解>

    文章目录 1.文件描述符fd 2.重定向 3.文件流指针:FILE* 4.动态库和静态库 1.文件描述符fd 文件描述符:实际上就是内核中一个进程打开的文件描述信息数组(file* fd_array[ ...

最新文章

  1. python读取文件with open_python 文件读写操作open和with的用法
  2. 高科技的计算机作文,高科技的作文范文400字
  3. 教师要合理使用计算机,教师学习计算机应用基础总结
  4. VBA 脚本快速copyExcel单元格的格式
  5. UWP开发---通过委托跨页面导航
  6. Android VideoView播放视频遇到的问题
  7. delphi OleVariant转换RecordSet
  8. 一文普及工业控制、PLC
  9. 9款超级好用的在线PDF工具!
  10. polyval matlab 怎么用,matlab polyfit polyval
  11. 偏微分方程离散化matlab,[数学]偏微分方程的离散化方法4.ppt
  12. android 涨水的动画,Android -- 贝塞尔实现水波纹动画(划重点!!)
  13. 渗透测试 - KALI Linux 学习 - kali linux如何启动METASPLOIT服务
  14. 软件测试-软件测试总结
  15. 使用WinRT OCR API的WPF中的OCR
  16. 开场白——第一篇博客
  17. 力扣解法汇总553-最优除法
  18. 在中国要想发财的22条秘诀!
  19. 角速度的相似变换定理的证明
  20. 皮革行业分销渠道管理系统有效缩短供销链,提升渠道运营收益

热门文章

  1. html进阶css(5)
  2. iOS的一些小技巧[转]
  3. Raid、lvm知识
  4. POJ-1163(DP,Water)
  5. HTML和CSS是什么玩意儿
  6. 服务器共享文件有访问台数限制,Win7/xp系统下共享文件夹最大连接数限制怎么解除...
  7. 深度学习 --- BP算法详解(误差反向传播算法)
  8. .net core linux服务,.netcore在linux服务生成
  9. mysql导入报错1071_导入sql文件报错:1071 Specified key was too long; max key length is 767 bytes...
  10. mysql /!/_Mysql(一)