如何在iPhone中执行命令行?

问题描述:

我想在iPhone iOS中执行一个命令行,用Xcode的Objective C项目,我用system()函数但是不行!如何在iPhone中执行命令行?

我在我的越狱iPhone安装ssh并检查该应用程序, 我写这个代码的应用程序,我做

system('id > /tmp/id'); 

安装和执行软件存在/tmp/id没有文件后。

我该如何解决这个问题?如果在Swift中帮助我,也没有任何问题,我只是想执行命令行。

您可以尝试使用NSTask

Using the NSTask class, your program can run another program as a subprocess and can monitor that program’s execution.

事情是这样的:

let task = NSTask() 
task.launchPath = "/bin/bash" 
task.arguments = ["arg1", "arg2", "arg3"] 
+0

谢谢回答,我用的第一行代码的代码和“进口基金会”,但它仍然给我的错误:无法解析的标识符NSTask''的”'使用,难道我失去了一些东西?我认为它只是为mac os x工作,而不是ios – user3671325

+0

你是对的,[NSTask](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSTask_Class/)仅适用于Mac OS。如果没有越狱,您将无法从iOS上的命令行执行任何操作。 – tylersimko

+0

我的手机是越狱的,我该如何执行命令行?我在object-c中使用了'system()'和'execv()',但仍然不起作用! – user3671325

您的代码应该工作正常使用该系统的功能,但也有一些陷阱:

1)如果它是一个Xcode项目,即使在一个越狱的iPhone中它也会被沙盒化,所以你的应用程序将不能在“/ tmp”中写入。改用应用程序的可写路径。 2)在任何情况下,当调用system()时,你应该使用可执行文件的绝对路径,例如, :

system('/usr/bin/id > /tmp/id'); 
+0

谢谢,可以用请告诉我什么是应用程序的可写路径? – user3671325

+0

如何关闭沙箱,并使用'system('/ usr/bin/id>/tmp/id')'?我看过iphone有ssh软件,那是怎么工作的? – user3671325