Попытка использовать библиотеки cydia: NSTask на джейлбрейкнутом iphone вылетает с ошибкой сегментации: 11 - PullRequest
4 голосов
/ 03 апреля 2012

Я хочу запустить dpkg (или любые другие файлы бинарных библиотек из cydia в каталогах / bin или / usr / bin) из приложения с графическим интерфейсом пользователя со значком, например, mobileterminal, ifile, myfile, cydia, alertcript и многими другими другие могут. Как они получают доступ к библиотекам? Этот код работает, и вывод процесса выводится в nslog, но затем он сразу же завершается с ошибкой сегментации: 11. это в моей функции viewdidload. Это не происходит в симуляторе, только мой iPhone 4. странно. пробовал запускать как мобильный, так и root. приложение находится в папке / Applications. Вот мой код.

РЕДАКТИРОВАТЬ: я использую версию xcode снежного барса, и только что обновил до льва, но я думаю, что это, вероятно, не проблема? Мой айфон это 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];

1 Ответ

0 голосов
/ 05 апреля 2012

Решено! После того, как я обновился до xcode 4.3.2, версии lion, симулятор потерпел крах с exc_bad_access, поэтому я включил зомби и обнаружил, что именно две последние строки [nstaskvar release]; [outputPipe release]; вызвали проблему.

Я отключил их обоих, и он ушел, и теперь отлично работает на моем iphone: D.

...