1

プログラムでターミナルコマンドを実行したい。コマンドは次のようになります。

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.

誰かアイデアはありますか?

4

1 に答える 1

2

今、私はそれを持っていると思います:

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

これらは、コマンドラインからの呼び出しでの個別の引数です。

古い答え:

現在のディレクトリを実行用に設定してみてください。

– setCurrentDirectoryPath:

これは基本的に、コードcdsystemバージョンでの影響です。

于 2011-08-01T11:22:13.040 に答える