【发布时间】:2011-06-06 18:36:48
【问题描述】:
假设我有一些工具,在其执行的某个时刻,它要求用户输入。例如,它可能会询问姓名和地址。在另一个时候,它可能会要求输入密码(并重新输入密码)。
NSTask 和 NSPipe 对象是否可以处理这些事情,即与命令行工具交互?
【问题讨论】:
标签: objective-c cocoa foundation nstask
假设我有一些工具,在其执行的某个时刻,它要求用户输入。例如,它可能会询问姓名和地址。在另一个时候,它可能会要求输入密码(并重新输入密码)。
NSTask 和 NSPipe 对象是否可以处理这些事情,即与命令行工具交互?
【问题讨论】:
标签: objective-c cocoa foundation nstask
参见 NSTask 的setStandardInput: 方法。它允许您在启动任务之前将 NSPipe 或 NSFileHandle 设置为任务的标准输入。 standard output和standard error也有类似的方法。
【讨论】:
NSTask 来提供输入。例如,命令行工具可以使用不通过stdin 的ncurses 输入函数,或者它可以直接从/dev/tty 读取而不是使用stdin。这对于要求输入密码的工具来说可能是正确的。