我正在尝试终止通过 NSTask 生成的 openvpn 任务。
我的问题:
我应该将ctrl+ c(SIGINT) 发送到我的 NSTask 的输入 NSPipe 吗?
inputPipe = [NSPipe pipe];
taskInput = [inputPipe fileHandleForWriting];
NSString dataString = @"\cC";
[taskInput writeData:[dataString dataUsingEncoding: [NSString defaultCStringEncoding]]];
或者,我正在考虑使用 kill(pid, SIGINT); 但它会复杂得多,因为必须通过绕道确定进程 ID([task processIdentifier] 在这里没有帮助) - 原始 NSTask 调用:
/bin/bash -c sudo -S | mypassword ....
这不好,我知道,但它只被调用一次,并且在这种情况下已经输入了 sudo 密码。