objective-c - 连续运行多个 NSTask

标签 objective-c cocoa macos nstask sox

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

1) songA > tempA

2) songB > tempB

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

谢谢。

最佳答案

可能没完全理解,但是

[task waitUntilExit];

没有完成这项工作?

关于objective-c - 连续运行多个 NSTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6004930/

相关文章:

javascript - 无法在 Mac Safari 的“开发”菜单中发现 ipad

objective-c - 为什么此代码在使用 Apple LLVM 编译时会崩溃,但在 LLVM/GCC 中不会崩溃?

cocoa - 带有 IBOutlets 和 IBActions 的 NSView 子类

xcode - Xcode 5.0在10.9崩溃

iphone - UIATableView 始终命名为 "Empty list"

iphone - Objective-C 2.0中的多线程问题

apache-flex - 错误 #3219 AIR 中的 NativeProcess

objective-c - ScriptingBridge Finder POSIX 路径

iOS 8 横向 : Keyboard does not display correctly

objective-c - 设置不透明 :NO vs setBackgroundColor:[NSColor clearColor]