【问题标题】:Pass data into a tool's stdin using NSTask使用 NSTask 将数据传递到工具的标准输入
【发布时间】:2011-06-06 18:36:48
【问题描述】:

假设我有一些工具,在其执行的某个时刻,它要求用户输入。例如,它可能会询问姓名和地址。在另一个时候,它可能会要求输入密码(并重新输入密码)。

NSTask 和 NSPipe 对象是否可以处理这些事情,即与命令行工具交互?

【问题讨论】:

    标签: objective-c cocoa foundation nstask


    【解决方案1】:

    参见 NSTask 的setStandardInput: 方法。它允许您在启动任务之前将 NSPipe 或 NSFileHandle 设置为任务的标准输入。 standard outputstandard error也有类似的方法。

    【讨论】:

    • 请注意,可能并不总是可以使用NSTask 来提供输入。例如,命令行工具可以使用不通过stdin 的ncurses 输入函数,或者它可以直接从/dev/tty 读取而不是使用stdin。这对于要求输入密码的工具来说可能是正确的。
    • 我知道这些类和方法。但是,它们使我感到困惑,我不确定在这种情况下如何使用它们。例如,假设一个工具将首先进行一些处理(比如压缩文件),然后要求我输入密码,然后重复输入密码。我应该只传入字符串@“myPassword\nmyPassword”(注意行分隔)来传入密码和重复密码吗?就这么简单吗?这是我要求的实际方面。
    • @Enchilada 如果该工具使用标准输入,并且不期望其他任何内容,那么可以。但是,请记住 Bavarious 的评论。有些工具可能不使用标准输入,你必须找到另一种方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2023-03-22
    相关资源
    最近更新 更多