看来我在理解 Cocoa 中的 NSTask 时遇到了一些麻烦。我要启动的应用程序是 openSSL。目前,我可以发送信息(启动路径、参数等),也可以使用 NSPipe 获得响应。我需要做的是响应应用程序要求的输入请求。使用以下代码,我可以发送和读取文件中的响应:
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: launchPath];
[task setArguments: arguments];
[task setCurrentDirectoryPath:dir];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *response = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
启动 NSTask 后,我需要提供域名、国家/地区等内容。我提出问题的原因是因为我需要能够使用 openSSL 生成证书签名请求并将其与其他一些数据一起发送, 到服务器。上面的代码没有损坏,我只是不确定如何发送该输入。
此外,如果有人在 Cocoa/ObjC 中使用了某种 openSSL 实现,并且觉得这将是比使用 NSTask 更好的选择,那么我也完全愿意接受。
提前致谢。