いくつかのシェルコマンドを実行したいiPhone(またはiPad)用のアプリを構築しようとしています。動作させたいiPhoneはジェイルブレイクされていません。
system()
コマンドはシェルコマンドの実行で動作しているように見えますが、出力と入力はもちろん問題です。NSTask
がこの種のものに使用される可能性があり、文書化されていませんが存在することを学びました。(Macも含めてNSTask.h
バッチリ動くようです)
問題は、このコードを実行するときです。
NSTask *task;
task=[[NSTask alloc] init];
task.launchPath=@"/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'
UNIXbin
ディレクトリの可能なパスをいくつか試してみましたが、見つからないか、アプリにファイルを一覧表示する権限がありません。-.-
そのコマンドの入力と出力の両方を制御しながら、iPhone でシェル コマンドを実行するにはどうすればよいですか?