如何从iPhone应用程序运行外部脚本?

时间:2011-11-02 16:54:32

标签: iphone objective-c ruby system

我在/var/root/目录中越狱了iPhone和ruby脚本,我需要从原生iPhone应用程序执行命令(在XCode中编码)。我尝试从本机应用程序(导入的Foundation.h)运行system("ruby /var/root/my_script.rb")函数,但调用没有执行脚本。

感谢您的解决方案。

1 个答案:

答案 0 :(得分:0)

在越狱4.2.1 3GS上玩Ruby。该脚本包含以下代码(它显示3行中的0,1和2,一个接一个):

3次{| x | p x}

并被放置在根目录中。我从一个非常简单的基于View的应用程序的app委托调用它,在* - (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary )launchOptions ,如下所示:

NSLog(@"1");
    system("ruby /rt.rb");
NSLog(@"1.4");
   NSLog(@"2 %@", system("ruby /rt.rb"));    
NSLog(@"3");

Xcode的控制台显示以下内容,显示Ruby脚本已成功运行:

星期二十二月十五日12:13:13 wr-3gs ruby​​test [501]:1 11月15日星期二12:13:14 wr-3gs UIKitApplication:com.yourcompany.rubytest [0x687f] [501]:0 11月15日星期二12:13:14 wr-3gs UIKitApplication:com.yourcompany.rubytest [0x687f] [501]:1 11月15日星期二12:13:14 wr-3gs UIKitApplication:com.yourcompany.rubytest [0x687f] [501]:2 11月15日星期二12:13:14 wr-3gs ruby​​test [501]:1.4 11月15日星期二12:13:14 wr-3gs UIKitApplication:com.yourcompany.rubytest [0x687f] [501]:0 11月15日星期二12:13:14 wr-3gs UIKitApplication:com.yourcompany.rubytest [0x687f] [501]:1 11月15日星期二12:13:14 wr-3gs UIKitApplication:com.yourcompany.rubytest [0x687f] [501]:2 星期二十二月十五日12:13:14 wr-3gs ruby​​test [501]:2(null) 11月15日星期二12:13:14 wr-3gs ruby​​test [501]:3

也就是说,它应该没有

  1. 强制以root用户身份调用'ruby'(如 system(“echo alpine | ruby​​'/rt.rb'root”);

    < / LI>
  2. 完全提供ruby可执行文件的路径。

  3. 尽管如此,您可以尝试执行最后两个操作(以root身份运行和/或提供完整的ruby可执行文件路径) - 它们可能有效。