2
我正在嘗試爲iPhone(或iPad,爲此)構建一個應用程序,在該應用程序中我想運行一些shell命令。我希望它工作的iPhone是而不是越獄。iPhone應用程序:獲取shell命令輸出
system()
命令似乎工作在執行shell命令,但輸出和輸入當然仍然是一個問題。我瞭解到NSTask
可能用於這些類型的事物,並且它存在,但沒有記錄。 (包括MAC NSTask.h
似乎完美地工作)
現在的問題是,這段代碼執行時:
NSTask *task;
task=[[NSTask alloc] init];
[email protected]"/usr/bin/ls";
task.arguments=[NSArray array];
NSPipe *pipe=[NSPipe pipe];
task.standardOutput=pipe;
task.standardError=pipe;
NSFileHandle *output=pipe.fileHandleForReading;
pipe=[NSPipe pipe];
task.standardInput=pipe;
[task launch];
其中pipe
是未來的I/O,它會產生一個錯誤閱讀:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'launch path not accessible'
我已經嘗試了很多可能的路徑爲unix bin
目錄,但我無法找到它或我的應用程序沒有權限列出文件。 -.-
如何在控制該命令的輸入和輸出的同時在iPhone上執行shell命令?
如果它沒有越獄,那麼它將無法正常工作。另外,這可能是列出目錄內容的最糟糕的方式。請參閱http://stackoverflow.com/questions/499673/getting-a-list-of-files-in-a-directory-with-a-glob – Petesh
'ls'不是一個例子,它可能是其他任何其他命令。但爲什麼只有越獄?爲什麼我不能執行一個shell命令? – tomsmeding
因爲在iOS中不允許。涉及直接創建另一個進程的任何事情都將被安全政策拒絕。 – Petesh