我想在我的程序中运行一个终端命令。 该命令如下所示:
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.
有人有想法吗?
答案 0 :(得分:2)
现在我想我已经明白了:
[task setArguments:[NSArray arrayWithObjects:@"HTTPProxy", @"127.0.0.1", nil]];
这些是从命令行调用的单独参数...
老答案:
您可以尝试设置当前目录以执行:
– setCurrentDirectoryPath:
这基本上是cd
版本代码中system
的影响。