【问题标题】:how android application to sdcard serviceandroid应用程序如何到sdcard服务
【发布时间】:2016-02-01 15:36:17
【问题描述】:

我注意到有一个名为 sdcard 的程序,它在 android 系统中包含两个线程。当我尝试在我的应用程序中读/写 sdcard 时,所有 I/O 请求都是从这两个线程提交的。所以我检查了AOSP,在[AOSP]/system/core/sdcard/sdcard.c中找到了代码。以下是对此的一些解释:

sdcard 是一个使用 FUSE 模拟 FAT-on-sdcard 风格的目录权限的程序(所有文件在创建时都被赋予固定的所有者、组和权限,所有者、组和权限不可更改,符号链接和硬链接不可创建,等等。

那么,我的问题是,我的应用程序如何将这些 I/O 调用详细提交给 sdcard 线程?我检查了代码,但没有找到一些活页夹的东西。

【问题讨论】:

    标签: android io ipc android-sdcard


    【解决方案1】:

    它说它使用 FUSE。 FUSE 是 linux 的一部分,它允许将给定文件夹的常规文件命令(读取、写入、打开、删除等)发送到应用程序。例如,您可以将文件夹 http 映射到发送 HTTP 请求的 FUSE 文件系统,并尝试像访问本地文件一样访问远程文件。

    在这种情况下,他们通过 FUSE 将 sd 卡映射到这个程序,所以所有的读/写都来自一个应用程序。

    【讨论】:

    • 感谢您的回复。我想要做的是添加一个从启动 I/O 请求到 sdcard 线程的原始应用程序传递的参数。你知道我该怎么做吗?因为通常android使用binder做IPC的东西,但是在那个sdcard文件中我没有找到相关的代码。
    • 也许是自定义 ioctl?你需要一个自定义内核来做到这一点。这实际上是使用 Linux 文件系统调用来传递参数,实际上不可能添加参数。
    • 抱歉,您能否解释一下“文件系统调用”或提供一些参考资料?我以前从来不知道这一点。当我的应用程序调用 java API 从 sdcard 读取文件以及它经过多少阶段或步骤才能进入此 sdcard 服务时,我仍然不明白......非常感谢。
    • 内核级文件系统调用。 open()、write()、read()、close()、ioctl() 等。 设备上绝对最低级别的库(如 libc)在想要写入文件系统时使用的实际 Linux 内核函数。 tldp.org/LDP/lki/lki-3.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多