我正在尝试使用 NSTask 运行一个简单的 bash 脚本并将输出定向到文本视图。执行任务后,我的应用程序的 CPU 使用率为 100%,即使它很简单echo
(目前)。
我创建了一个全新的项目来隔离问题:
@interface AppDelegate ()
@property (nonatomic) NSTask *task;
@property (nonatomic) NSPipe *pipe;
@end
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
self.pipe = [NSPipe pipe];
self.pipe.fileHandleForReading.readabilityHandler = ^(NSFileHandle *h) {
NSLog(@"Read: %@", [h readDataToEndOfFile]);
};
self.task = [[NSTask alloc] init];
self.task.launchPath = @"/bin/bash";
self.task.arguments = @[@"-c", @"echo test"];
self.task.standardOutput = self.pipe;
[self.task launch];
}
@end
它被正确执行并且输出(作为一个NSData
)被记录为NSLog
:
PipeTest[3933:2623] Read: <74657374 0a>
但是,在我终止我的应用程序之前,CPU 使用率保持在 100%。
编辑:
Time Profiler 测试返回下面的列表,但我不确定如何解释。