2012-02-02 32 views
0

下面的代码工作正常,直到我升级到OSX Lion。它调用一个外部命令并将输出保存到一个NSString中。NSTask检索外部命令的输出在Lion上停止woking

我不知道为什么它停止工作。有任何想法吗?

-(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; 
} 

回答

0

我刚刚发现。我将NSPipe分配给标准错误,因为Snow Leopard/usr/sbin/scselect在那里发送它的输出,而不是标准输出。很显然,Lion的新版本修复了这个问题(并破坏了我的代码)。