0

NSTaskを使用して複数のコマンドを順番に実行する必要があり、次のコマンドに進むことができるように、タスクが終了したかどうかを判断するための良い方法は何でしょうか。「sox」(アプリケーションバンドルに含まれています)を使用して、入力オーディオファイルを使用して一時オーディオファイルを作成し、それらの一時オーディオファイルを1つのファイルに結合する必要があります。プロセスのフローの例(実際のコマンドではありません):

1)songA> tempA

2)songB> tempB

3)tempAtempB>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];

このプロセスが終了した後に(前のプロセスの出力を使用して)さらに2つのNSTaskプロセスを実行する必要があるとすると、次のプロセスに進むことができるように、1つのプロセスが終了したことを検出する最良の方法は何でしょうか。

ありがとう。

4

1 に答える 1

2

完全には理解していないかもしれませんが

[task waitUntilExit];

仕事をしませんか?

于 2011-05-14T21:47:04.990 に答える