2015-09-07 150 views
0

我想在iPhone iOS中執行一個命令行,用Xcode的Objective C項目,我用system()函數但是不行!如何在iPhone中執行命令行?

我在我的越獄iPhone安裝ssh並檢查該應用程序, 我寫這個代碼的應用程序,我做

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

安裝和執行軟件存在/tmp/id沒有文件後。

我該如何解決這個問題?如果在Swift中幫助我,也沒有任何問題,我只是想執行命令行。

回答

0

您可以嘗試使用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

您的代碼應該工作正常使用該系統的功能,但也有一些陷阱:

1)如果它是一個Xcode項目,即使在一個越獄的iPhone中它也會被沙盒化,所以你的應用程序將不能在「/ tmp」中寫入。改用應用程序的可寫路徑。 2)在任何情況下,當調用system()時,你應該使用可執行文件的絕對路徑,例如, :

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

謝謝,可以用請告訴我什麼是應用程序的可寫路徑? – user3671325

+0

如何關閉沙箱,並使用'system('/ usr/bin/id>/tmp/id')'?我看過iphone有ssh軟件,那是怎麼工作的? – user3671325