我想在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