Я хочу запустить dpkg (или любые другие бинарные файлы библиотеки из cydia в каталогах /bin или /usr/bin) из приложения с графическим интерфейсом со значком, например mobileterminal, ifile, myfile, cydia, alertscript и многие другие. Как они получают доступ к библиотекам? Этот код работает, и стандартный вывод процесса печатается в nslog, но затем он сразу же вылетает с ошибкой сегментации: 11. это в моей функции viewdidload. В СИМУЛЯТОРЕ ЭТОГО НЕ ПРОИСХОДИТ, только в моем iPhone 4. странно. пробовали работать как с мобильными, так и с root-правами. приложение находится в папке /Applications. Вот мой код.
РЕДАКТИРОВАТЬ: я использую версию xcode для снежного барса и только что обновился до льва, но я думаю, что это, вероятно, не проблема? Мой 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];