【发布时间】:2011-12-15 07:13:10
【问题描述】:
我想在 Xcode 中使用 system 调用以 root 身份登录。我尝试这段代码没有成功:
System("su");
System("alpine");
或
System("su root");
System("alpine");
或
System("su root alpine");
当我用谷歌搜索时,我知道这是使用 NSTask 或 NSPipe 完成的。
谁能告诉我如何使用NSTask 和NSPipe 运行多个system 命令?
请给我一些关于这个或其他方法的提示。我在越狱的 iPhone 上使用这个应用程序。
更多详情请联系here。
【问题讨论】:
-
请注意,如果您将应用程序放在
/Applications中,那么当您的应用程序启动时,您已经是 root。 -
另外请注意,iOS 是一个 Unix 操作系统。而且我认为你不能给已经存在的进程root权限。您只能启动具有更高权限的新进程。这意味着您将需要辅助可执行文件。 (除非您以 root 身份重新启动应用程序)
-
另外请记住,
system()就像您输入了传递给命令行 shell 的确切内容。 (你不能调用它两次来传递输入。)所以system("alpine")不是正确的方法。而使用system()(与使用fork()和exec()不同)您无法直接控制子进程的I/O。一旦你“以root身份登录”,你到底想做什么?因为即使你设法获得了一个 shell,system()也会挂起你的进程并等待 shell 退出。推荐阅读:man 3 system、man 2 fork和man 3 exec。
标签: iphone ios xcode sdk system