Objective c NSTask获取命令的输出
我正在尝试从另一个应用程序的Objective c NSTask获取命令的输出,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我正在尝试从另一个应用程序的OSX上运行一个可执行文件 NSPipe *pipe = [NSPipe pipe]; NSTask *task = [[NSTask alloc] init]; task.arguments = @[@"param1", @"param2", @"param3", @"param4"]; task.launchPath = @"/usr/bin/myApp"; [task setStandardOutput: pipe]; [task launch]; [task
OSX
上运行一个可执行文件
NSPipe *pipe = [NSPipe pipe];
NSTask *task = [[NSTask alloc] init];
task.arguments = @[@"param1", @"param2", @"param3", @"param4"];
task.launchPath = @"/usr/bin/myApp";
[task setStandardOutput: pipe];
[task launch];
[task waitUntilExit];
NSFileHandle *file = [pipe fileHandleForReading];
NSData *output = [file readDataToEndOfFile];
NSString *outputString = [[NSString alloc] initWithData:output encoding:NSUTF8StringEncoding];
[file closeFile];
NSLog(@"%@",outputString);`
但结果却一文不值。不过,我确信NSTask
正在得到执行。我想我的NSPipe
有问题。但我仍然没有看到预期的产出
谢谢。您的任务产生了多少输出?如果有很多,您需要处理它的输出管道被填满的事实。这很可笑——多年来,我对苹果公司一直有一个公开的bug——但它确实存在。你的任务产生了多少产出?如果有很多,您需要处理它的输出管道被填满的事实。这是荒谬的——多年来,我一直对苹果有一个公开的bug——但它确实存在。