2011-05-14 80 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