在Java中,我可以有这样的东西:
Process p = Runtime.getRuntime().exec("su");
DataOutputStream pOut = new DataOutputStream(p.getOutputStream());
pOut.writeBytes("find / -perm -2000 -o -perm -4000\n");
pOut.writeBytes("ps\n");
pOut.writeBytes("ls\n");
pOut.writeBytes("exit\n");
pOut.flush();
p.waitFor();我知道要在JNI方法中执行find命令,可以使用system或popen函数。但是我不知道怎么用su特权来执行它?
PS:因为系统功能分叉一个新的子进程。我希望有一个子进程生成来执行多个命令,比如在Java中。
发布于 2012-09-18 04:27:36
Femi的答案是接近的,我已经测试过,以下工作为我:
system("su -c \"find / -perm -2000 -o -perm -4000; ps; ls\"");发布于 2012-09-18 04:30:28
我不明白使用system()执行什么,system()不返回流来读取输出。
我想你应该试试popen()
发布于 2012-09-18 02:17:59
假设你已经在你的安卓设备上安装了su,并且它就在你的路径上,你可以这样做:
system("su -c \"find / -perm -2000 -o -perm -4000\" root");su接受参数:-c参数指定要运行的命令。
编辑:你可能在那里运气不好。我不确定是否可以将多个命令传递给su命令。您可以将shell传递给它,然后传递该shell命令,但这并不能保证。
system("su -c \"sh -c 'find / -perm -2000 -o -perm -4000; rm /tmp/1'\" root");https://stackoverflow.com/questions/12469403
复制相似问题