2011-08-01 291 views
1

我想在我的程序中運行終端命令。 的命令如下:使用NSTask運行終端命令

cd /path/to/file/; ./foo HTTPProxy 127.0.0.1 

它與system()但是當我使用NSTask它不工作。

system("cd /path/to/file/; ./foo HTTPProxy 127.0.0.1"); 

工作正常,但

NSTask *task = [[NSTask alloc] init]; 
[task setLaunchPath:@"/path/to/file/./foo"]; 

NSPipe *pipe = [NSPipe pipe]; 
[task setStandardOutput:pipe]; 
NSFileHandle *file = [pipe fileHandleForReading]; 

[task setArguments:[NSArray arrayWithObjects:@"HTTPProxy 127.0.0.1", nil]]; 
[task launch]; 

NSData *data = [file readDataToEndOfFile]; 
NSString *string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 
NSLog(string); 

沒有。 輸出:

Command-line option 'HTTPProxy 127.0.0.1' with no value. Failing. 

有沒有人有想法?

回答

2

現在,我想我已經得到了它:

[task setArguments:[NSArray arrayWithObjects:@"HTTPProxy", @"127.0.0.1", nil]]; 

那些在你調用命令行參數分開......

OLD答:

你可以嘗試設置當前執行目錄:

– setCurrentDirectoryPath: 

這基本上是cdsystem版本的代碼中。

+0

不,同樣的錯誤... – ahee

+0

是非常感謝它現在工作! – ahee