我想从带有图标的 GUI 应用程序运行 dpkg(或 /bin 或 /usr/bin 目录中来自 cydia 的任何其他二进制库文件),例如 mobileterminal、ifile、myfile、cydia、alertscript 等等。他们如何访问图书馆?此代码有效,并且进程的标准输出打印在 nslog 中,但随后它立即因分段错误而崩溃:11。这是在我的 viewdidload 函数中。这不会发生在模拟器中,只有我的 iPhone 4。很奇怪。已尝试以移动设备和 root 身份运行。该应用程序位于 /Applications 文件夹下。这是我的代码。
编辑:我正在使用 xcode 的雪豹版本,并且刚刚更新为 lion 但我认为这可能不是问题?我的 iPhone 是 ios5.0.1。当我测试它时会发布。
NSString * workingdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSTask * nstaskvar=[NSTask new];//note the NSTask.h file included!
NSPipe * outputPipe = [NSPipe pipe];
[nstaskvar setLaunchPath:@"/bin/ls"];
[nstaskvar setArguments:[NSArray arrayWithObjects:@"/usr",nil]];
[nstaskvar setCurrentDirectoryPath:workingdir];
[nstaskvar setStandardOutput:outputPipe];
[nstaskvar setStandardInput:[NSPipe pipe]];
[nstaskvar launch];
NSString * outputstring = [[[NSString alloc] initWithData:[[outputPipe fileHandleForReading] readDataToEndOfFile] encoding:NSUTF8StringEncoding] autorelease];//readDataToEndOfFile reads until file is closed, which happens when process exits :) (i couldnt get waitUntilExit to work)
NSLog(@"%@", outputstring);
[nstaskvar release];
[outputPipe release];