我想在iPhone iOS中执行一个命令行,用Xcode的Objective C项目,我用system()
函数但是不行!如何在iPhone中执行命令行?
我在我的越狱iPhone安装ssh
并检查该应用程序, 我写这个代码的应用程序,我做
system('id > /tmp/id');
安装和执行软件存在/tmp/id
没有文件后。
我该如何解决这个问题?如果在Swift中帮助我,也没有任何问题,我只是想执行命令行。
我想在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"]
您的代码应该工作正常使用该系统的功能,但也有一些陷阱:
1)如果它是一个Xcode项目,即使在一个越狱的iPhone中它也会被沙盒化,所以你的应用程序将不能在“/ tmp”中写入。改用应用程序的可写路径。 2)在任何情况下,当调用system()时,你应该使用可执行文件的绝对路径,例如, :
system('/usr/bin/id > /tmp/id');
谢谢,可以用请告诉我什么是应用程序的可写路径? – user3671325
如何关闭沙箱,并使用'system('/ usr/bin/id>/tmp/id')'?我看过iphone有ssh软件,那是怎么工作的? – user3671325
谢谢回答,我用的第一行代码的代码和“进口基金会”,但它仍然给我的错误:无法解析的标识符NSTask''的”'使用,难道我失去了一些东西?我认为它只是为mac os x工作,而不是ios – user3671325
你是对的,[NSTask](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSTask_Class/)仅适用于Mac OS。如果没有越狱,您将无法从iOS上的命令行执行任何操作。 – tylersimko
我的手机是越狱的,我该如何执行命令行?我在object-c中使用了'system()'和'execv()',但仍然不起作用! – user3671325