Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以root用户身份运行应用程序:root_Android_C_Java Native Interface_Root - Fatal编程技术网

Android 以root用户身份运行应用程序:root

Android 以root用户身份运行应用程序:root,android,c,java-native-interface,root,Android,C,Java Native Interface,Root,我有一个根手机和它的应用程序,我已经建立。 我的应用程序从超级用户应用程序接收su权限,并可以调用需要root的命令,但问题是我有一段代码必须从具有root uid的进程运行,并且无法单独编译该文件 现在,是否可以分叉我的进程并以root:root的身份运行子进程?或者以某种方式将uid更改为root(我尝试了seteuid/setuid,但没有成功..可能是因为应用程序的setuid标志已关闭) 我想要这样的东西: fork process if (child-process) run

我有一个根手机和它的应用程序,我已经建立。 我的应用程序从超级用户应用程序接收su权限,并可以调用需要root的命令,但问题是我有一段代码必须从具有root uid的进程运行,并且无法单独编译该文件

现在,是否可以分叉我的进程并以root:root的身份运行子进程?或者以某种方式将uid更改为root(我尝试了seteuid/setuid,但没有成功..可能是因为应用程序的setuid标志已关闭)

我想要这样的东西:

fork process
if (child-process)
    run_special_code()
else
    wait_for_the_child_process_to_exit()

谢谢

我不确定Android有多大不同,但在POSIX系统上,能够更改进程的[e]uid并不取决于在二进制文件模式下设置的setuid位。如果需要设置进程的真实uid和gid,那么应该调用
setuid()
/
setgid()
两次——第一次调用将设置euid/egid,但第二次调用(当euid/egid已经是根时)也将设置真实(并保存)uid/gid。很自然,你只想在分叉后做这件事,而且只想在孩子身上做。同样,Android可能会有所不同。我已经尝试过了,uid保持不变…可能是