Android中FileDescriptor的实际系统文件描述符(如int)

Android中FileDescriptor的实际系统文件描述符(如int),第1张

概述有没有办法从Android的FileDescriptor对象获取系统文件描述符(套接字或文件号为int)?我想直接在JNI代码中访问文件描述符,而不使用任何Java包装器.编辑:我找到了getParcelFileDescriptorFD,并且FileDescriptor具有名为“descriptor”的int字段,例如media/jni/android_media_Me

有没有办法从Android的fileDescriptor对象获取系统文件描述符(套接字或文件号为int)?我想直接在JNI代码中访问文件描述符,而不使用任何Java包装器.

编辑:
我找到了getParcelfileDescriptorFD,并且fileDescriptor具有名为“ descriptor”的int字段,例如media / jni / androID_media_MediaPlayer.cpp中的用法示例,func定义在frameworks / base / core / jni / androID_util_Binder.cpp中,该字段本身在libcore / luni中/src/main/java/java/io/fileDescriptor.java

但这不是官方记录的API的一部分.有记录的“正确”方法吗?

解决方法:

dalvik / libcore /中的本机代码在java_io_fileDescriptor.c中使用jniGetFDFromfileDescriptor,但是您不应该自己调用它,因为它不是稳定的API.您可以复制&粘贴该代码,但您确实要在进行三思而后行.使用JNI访问实现细节只是在乞求您的代码将来被意外破坏!

更好的选择是:

>如果可以,将I / O保留在Java端.
>如果您必须在本机端执行I / O(如媒体播放器的情况),则将I / O保留在本机端:调用open(2)或该端的任何其他 *** 作,将fd保留为int而不是弄乱fileDescriptor对象,如果将任何内容传递回Java,则传递int或您自己的对象(除了传递回本机代码外,无意将其用于其他任何事情).

这两个选择现在都可以使用,并且不会因您无法控制的AndroID实现细节的更改而被偶然破坏.

总结

以上是内存溢出为你收集整理的Android中FileDescriptor的实际系统文件描述符(如int)全部内容,希望文章能够帮你解决Android中FileDescriptor的实际系统文件描述符(如int)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1092415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存