NSTask для получения вывода внешней команды перестал просыпаться на Lion - PullRequest
0 голосов
/ 02 февраля 2012

Следующий код работал нормально, пока я не обновился до OSX Lion. Он вызвал внешнюю команду и сохранил вывод в строку NSString.

Понятия не имею, почему он перестал работать. Есть идеи?

-(NSString *) rawResponse{
    NSTask *task = [[NSTask alloc] init];
    [task setLaunchPath:@"/usr/sbin/scselect"];

    NSPipe *pipe = [NSPipe pipe];
    [task setStandardError:pipe];
    [task launch];
    NSData *data = [[pipe fileHandleForReading] readDataToEndOfFile];
    [task waitUntilExit];
    [task release];
    NSString *result = [[[NSString alloc] initWithData:data 
                                             encoding:NSUTF8StringEncoding] autorelease];

    NSLog(@"The returned value is: %@", result);

    return result;
}

1 Ответ

0 голосов
/ 03 февраля 2012

Я только что узнал. Я назначил NSPipe на стандартную ошибку, потому что в Snow Leopard / usr / sbin / scselect отправлял свои выходные данные вместо стандартных выходных данных. Очевидно новая версия в Lion исправляет это (и ломает мой код).

...