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