Мне нужно выполнить несколько команд последовательно, используя NSTask, и я подумал, что было бы хорошим способом узнать, завершилось ли задание, чтобы я мог перейти к следующей команде. Я использую «sox» (который я включаю в свой комплект приложений) для создания временных аудиофайлов с использованием входных аудиофайлов, а затем мне нужно объединить эти временные аудиофайлы в один файл. Пример потока процессов (не фактических команд):
1) songA> tempA
2) songB> tempB
3) объединить tempA tempB> songC
Я использую следующий код для завершения первой команды:
NSArray *arguments;
arguments = [NSArray arrayWithObjects: @"songA", @"-f", @"-S", @"-G", @"-V", @"-b", @"24", @"-r", @"384k", @"tempA", nil];
NSString *path=[[NSBundle mainBundle] pathForResource:@"sox" ofType:nil];
NSTask *task;
task = [[NSTask alloc] init];
[task setStandardInput:[NSPipe pipe]];
[task setLaunchPath:path];
[task setArguments: arguments1];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *string;
string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog (@"stuff :\n%@", string);
[string release];
[task release];
Предположим, мне нужно было выполнить еще два процесса NSTask после того, как этот будет завершен (с использованием результатов предыдущих процессов), что было бы лучшим способом определить, что один процесс завершен, чтобы я мог перейти к следующему .
Спасибо.