0

我需要使用 NSTask 按顺序运行多个命令,并且想知道什么是判断任务是否完成的好方法,以便我可以继续执行下一个命令。我正在使用“sox”(我包含在我的应用程序包中)使用输入音频文件创建临时音频文件,然后需要将这些临时音频文件组合成一个文件。流程示例(不是实际的命令):

1) 歌曲A > 温度A

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 进程(使用先前进程的输出),那么检测一个进程已经完成以便我可以继续下一个进程的最佳方法是什么。

谢谢。

4

1 回答 1

2

可能没有完全理解,但是

[task waitUntilExit];

不做这份工作?

于 2011-05-14T21:47:04.990 回答