2011-05-14 72 views
0

我需要使用NSTask按顺序运行多个命令,并且想知道如果一个任务已经完成,这将是一个好方法,因此我可以继续下一个命令。我使用“sox”(包括在我的应用程序包中)使用输入音频文件创建临时音频文件,然后需要将这些临时音频文件合并到一个文件中。 )连续运行多个NSTask

1)SONGA> TEMPA

2歌曲B> 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进程(使用先前进程的输出),检测一个进程已完成以便继续进行下一步的最佳方法是什么?

谢谢。

回答

2

也许不能完全理解,但

[task waitUntilExit]; 

不胜任这项工作?

+0

应该调用哪个方法? – Mashhadi 2013-03-04 15:04:19

+0

在那里,你想等待任务完成。在互联网上寻找很多例子,例如http://cocoadev.com/wiki/NSTask – jm666 2013-03-07 09:27:26