Я создаю приложение Cocoa, которое использует NSTask для вызова скрипта Python.
NSPipe *pipe = [NSPipe pipe];
NSFileHandle *file = pipe.fileHandleForReading;
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/anaconda3/bin/python"]; // Python path
[task setArguments:@[@"run.py"]]; //My program to be executed on terminal
task.standardOutput = pipe;
task.standardError = pipe;
[task launch];
[task waitUntilExit];
NSData *data = [file readDataToEndOfFile];
[file closeFile];
NSString *output = [[NSString alloc] initWithData: data encoding:NSUTF8StringEncoding];
NSLog (@"output:\n%@", output);
Когда я пытаюсь запустить небольшую программу на Python, такую как print hello world, используя NSTask, она запускается. Но когда я пытаюсь выполнить программу, выполнение которой через NSTask занимает больше времени (~ 40 секунд), она не выполняется, и я не могу получить строку вывода из терминала.
Как мне убедиться, что мой код выполняется в терминале, а затем управление передается следующим операторам в программе?