使用NSPipe进行交互式命令

时间:2015-05-23 16:23:50

标签: objective-c macos cocoa nspipe

我在我的OS X应用程序中启动了一些交互式过程,我希望能够从管道读取和写入。

例如:启动进程将等待用户键入命令。当用户完成(也就是按下回车)时,进程将返回一些内容然后再等待用户。

目前,我正在使用overflow: hidden类进行通信,但问题是在调用方法NSPipe时,我必须调用writeData:才能获得通知{{1 }}。

完整代码(包含更改的文件夹路径)是

closeFile

请注意,我收到第一个通知(进程正在响应),但调用NSFileHandleDataAvailableNotification后没有通知。

如何实现沟通:

  1. 启动(并通过应用程序生命周期保持启动)

  2. 支持
  3. 写作和阅读

1 个答案:

答案 0 :(得分:1)

您需要为发送到管道的任何命令附加换行符,方式与交互式方式相同。新行刷新流缓冲区,通常是命令的“go”部分。

但是,我找不到任何重新强制执行此答案的提法。