相关疑难解决方法(0)

NSTask的实时输出

我有一个PHP脚本,它有mutliple sleep()命令.我想在我的应用程序中执行它NSTask.我的脚本看起来像这样:

echo "first\n"; sleep(1); echo "second\n"; sleep(1); echo "third\n";
Run Code Online (Sandbox Code Playgroud)

我可以使用通知异步执行我的任务:

- (void)awakeFromNib {
    NSTask *task = [[NSTask alloc] init];
    [task setLaunchPath: @"/usr/bin/php"];

    NSArray *arguments;
    arguments = [NSArray arrayWithObjects: @"-r", @"echo \"first\n\"; sleep(1); echo \"second\n\"; sleep(1); echo \"third\n\";", nil];
    [task setArguments: arguments];

    NSPipe *p = [NSPipe pipe];
    [task setStandardOutput:p];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskExited:) name:NSTaskDidTerminateNotification object:task];

    [task launch];

}

- (void)taskExited:(NSNotification *)notif {
    NSTask *task = [notif object];
    NSData *data = [[[task standardOutput] fileHandleForReading] readDataToEndOfFile];
    NSString *str = …
Run Code Online (Sandbox Code Playgroud)

macos nstask

20
推荐指数
2
解决办法
5678
查看次数

标签 统计

macos ×1

nstask ×1