【发布时间】:2015-04-06 09:40:10
【问题描述】:
我正在尝试从 android 文件系统中的 /dev/test 节点读取数据。 我试过了
mount -o rw remount /dev && touch /dev/test
从 shell 并且它工作,但是当我尝试使用时
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("su");
proc = rt.exec("mount -o rw remount /dev && touch /dev/test");
/dev/下没有test文件
【问题讨论】:
-
/dev 不是普通文件的位置。用
touch在那里创建一个是错误的。使用mknod,但不要期望结果表现得像一个普通文件。你真正想要完成什么? -
我正在创建一个系统服务,它将写入文件并由设备驱动程序轮询。
-
除了对任务使用错误的操作(如前所述,您必须使用
mknod与适当的主次编号和设备类型,而不是touch),你不是以超级用户身份运行它。对 exec() 的每次调用都是独立的 - 您对 su 的调用除了退出之外什么都不做,然后您尝试以应用程序的用户而不是 root 身份运行其他命令。 -
嗨 Chris,感谢您提供的信息,但 Android 内核没有 mknod,:( 还有其他解决方案吗?基本上我正在创建一个应用程序,它将 RW 一些数据写入此 /dev 节点,驱动程序将正在轮询此节点以获取数据。
-
你错了。内核肯定有 mknod。此外,android 的工具箱 shell 环境通常会提供一个工具来调用它 - 如果您的系统上缺少该工具,您可能必须提供自己的副本。
标签: java android linux filesystems