Последовательный запуск нескольких NSTask

Мне нужно последовательно запустить несколько команд с помощью NSTask, и мне было интересно, что было бы хорошим способом узнать, завершена ли задача, чтобы я мог перейти к следующей команде. Я использую «sox» (который я включаю в свой пакет приложений) для создания временных аудиофайлов с использованием входных аудиофайлов, а затем мне нужно объединить эти временные аудиофайлы в один файл. Пример потока процессов (не фактических команд):

1) песня А > темп А

2) песняB > темпB

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 после завершения этого (используя выходные данные предыдущих процессов), что было бы лучшим способом определить, что один процесс завершен, чтобы я мог перейти к следующему.

Спасибо.


person minimalpop    schedule 14.05.2011    source источник


Ответы (1)


Может не до конца понял, но

[task waitUntilExit];

не выполняет работу?

person jm666    schedule 14.05.2011
comment
где этот метод должен быть вызван? - person Mashhadi; 04.03.2013
comment
в том месте, где вы хотите ДОЖДАТЬСЯ завершения задачи. Ищите много примеров в Интернете, например. cocoadev.com/wiki/NSTask - person jm666; 07.03.2013