Android su是什么意思:process=Runtime.getRuntime().exec(“su”);

Android su是什么意思:process=Runtime.getRuntime().exec(“su”);,android,Android,我试图找出一些代码,我被给予。有人能告诉我这是什么意思吗 process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(process.getOutputStream()); 尤其是苏 谢谢 这是一个Unix命令。它用于切换活动用户。有关命令作用的详细信息,请参见例如。对命令名的含义进行了一些讨论。我以为它是“切换用户”,但它并没有那么简单。在没有任何其他类型参数的情况下使用,su将用户ID更改为0(超级用户),但不会

我试图找出一些代码,我被给予。有人能告诉我这是什么意思吗

process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
尤其是苏


谢谢

这是一个Unix命令。它用于切换活动用户。有关命令作用的详细信息,请参见例如。对命令名的含义进行了一些讨论。我以为它是“切换用户”,但它并没有那么简单。

在没有任何其他类型参数的情况下使用,su将用户ID更改为0(超级用户),但不会更改当前路径或环境。

好的,但在这种情况下,为什么有人要切换活动用户?要执行当前用户不允许执行的操作。具体地说,这段代码可能以root用户身份启动shell进程(隐含),并设置一个流来向其发送命令,以便让它完成父进程无权完成的事情。请注意,android的官方版本不支持这一点。因此,如果我想在其他线程中创建一个输入流(这样我就不会在阻止输入时终止应用程序),我应该复制这种模式还是有更好的方法来实现这一点?什么是经常被忽略的,但最重要的是,su不会更改现有进程的用户ID,而是启动一个新进程(可能是一个shell),作为请求的用户ID运行。真的!要更改当前进程的执行ID,程序应尝试调用setuid(uid)uid\u t uid;默认情况下,su命令启动一个新的shell,您可以提供一个要在新shell中执行的命令。是的,但请注意setuid()不能让以前没有特权的进程成为root进程,这是许多试图以编程方式使用“su”的人(特别是在android上)正在寻找的功能,并且不会找到。