问题标签 [nspipe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1350 浏览

macos - 在 Swift 中修改 NSTextField 的 stringValue

我试图通过改变它NSTextField 的来源来改变它的内容,但它给了我一个错误。ViewControllerstringValueAppDelegate

中的代码AppDelegate是:

它从以下位置调用ViewController

并且NSTextFieldIBOutlet较早创建的:

并尝试稍后修改:

但我得到的只是

致命错误:在展开可选值时意外发现 nil

我究竟做错了什么?

0 投票
1 回答
143 浏览

objective-c - Cocoa App 和控制台应用程序之间的通信

我有两个应用程序,一个带有 UI(一个 Cocoa 应用程序)。另一个是控制台应用程序。

我的要求是在 CocoaApp 中获取用户输入并将其传递给进程到 ConsoleApp 并返回值。

我已经尝试过这样的事情,我能够发送和处理数据,但无法返回。我不能使用 NSDistibutedNotification。我用谷歌搜索并发现 NSPipe 应该可以工作,但我无法理解如何实现和使用 Pipes,请提出建议并帮助理解。

我的代码在这里:

在 CocoaApp 中:

在 ConsoleApp 中:

0 投票
1 回答
614 浏览

objective-c - 使用 NSipe 进行交互式命令

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

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

目前,我正在使用NSPipe类进行通信,但问题是在writeData:调用方法时,我必须调用closeFile才能获得通知NSFileHandleDataAvailableNotification

完整代码(更改文件夹路径)是这样的

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

如何实现通信,即:

  1. 启动(并在应用生命周期中保持启动)

  2. 支持读写

0 投票
1 回答
120 浏览

macos - Cocoa - 创建我的应用程序的多个实例

我的要求是创建我的应用程序的多个实例。我能够成功地创建多个没有参数的实例,但是当我用我的 runCommand 传递一些参数时,它会创建我的应用程序的无限实例,为了停止这种情况,我必须强制关闭我的系统。

提前致谢 :

我的工作代码如下:

我唯一要做的就是一个一个地创建我的应用程序的多个实例。

0 投票
1 回答
2212 浏览

swift - OpenSSL - 主题在 OS X 应用程序中不以“/”开头

我目前正在开发一个应用程序,该应用程序从 OS X 应用程序中的文本字段收集信息,然后访问 openssl 二进制文件以基于这些文本字段生成 CSR 和私钥。这是当前代码

但是我收到一个错误,指出Subject does not start with '/'。希望有人能对我提出某种想法,说明为什么我的主题不是以 / 开头,尽管它显然是。

谢谢大家

0 投票
1 回答
1601 浏览

swift - Swift NStask 函数

我是一个完全快速的菜鸟。在 xcode 中使用这段代码,我得到了我需要的结果。我创建了一个带有多个参数的命令行二进制“菜单栏”。我通常在终端“/bin/menubar getip”、“/bin/menubar/getuser”中运行它。我想根据以下工作代码创建一个函数。

我想将其转换为函数。

0 投票
1 回答
142 浏览

swift - 如何测试没有数据写入 NSPipe

NSPipe最近我一直在研究一个日志框架,如果他们不希望日志消息进入控制台,我允许用户提供一个日志来关闭。

可以启用或禁用,当Logger禁用时,不应将任何数据发送到管道中。

当记录器启用时,很容易检查数据是否已通过管道发送,因为availableData立即包含数据,并且触发了 NSFileHandleDataAvailableNotification/readabilityHandler 块。

但是,如果您要测试数据未通过管道发送,并尝试应用availableData不包含任何数据的相同想法,则测试将超时,因为availableData仅在收到数据后才返回。

我想出了一个解决方案,那就是监听通知,如果 X 秒后没有收到,则满足没有收到通知的期望,前提是期望将被满足两次(导致测试失败)如果收到通知。

这种方法的问题是,如果由于某种原因,管道确实收到了一些数据,一旦在readabilityHandler块中满足了期望,测试立即成功,并且第二次没有满足期望:

如果管道接收到数据,将导致测试失败,如果没有,则通过测试,更好的方法是什么?

0 投票
1 回答
159 浏览

swift - 如何在 Swift 中“开球” NSPipe

我正在尝试将标准输出 NSPipe 与 NSTask 之一连接起来,以获得两个 NSPipes,每个都将进入两个新 NSTasks 的标准输入。

我知道我可以在 C 中使用teefunction来做到这一点,但我在 Foundation 和 Darwin 框架中都找不到它。我怎样才能做到这一点?

0 投票
1 回答
168 浏览

cocoa - 使用 NSTask 交互式访问命令

我正在使用 NSTask 来运行交互式的 cli 应用程序。我用它通过 USB 连接提取数据。

我正在使用大纲和错误管道打开一个 NSTask,但是当我发出命令时,它可以工作,但是会在循环中旋转沙滩球,从输出中提取数据。

我希望能够混合执行帮助命令的 - (IBAction)clicked:(id)sender 按钮并返回输出:

0 投票
1 回答
91 浏览

xcode - NSFileHandle 在没有调试器的情况下运行时表现异常 - 一些 NSRunLoop 问题?

我正在为 Mac 上的 Adob​​e Premiere 编写一个插件,它打开一个外部应用程序,然后使用 NSPipe 和 NSFileHandle 从外部应用程序读取标准输出。我知道这样做的推荐方法包括使用 NSNotificationCenter 以及 NSFileHandle 的 read​In​Background​And​Notify 命令,或者使用 NSFilehandle 的 setReadabilityHandler 方法在输出到达时一次读取一行:

当我从 Xcode 启动带有调试器的 Premiere 时,这工作得很好。但是,当我自己运行 Premiere 时,当外部应用程序在其标准输出中放入一行时,不会调用块(或通知,如果我使用该方法)。我假设有一些奇怪的方式,当它通过 Xcode 运行时,它运行的线程有一个运行循环,当插件从 Premiere 启动时它以某种方式不活动运行。

我可以解决这个问题的一种方法是只有一个循环,每秒检查几次是否有东西要从在后台线程中运行的管道的 NSFileHandle 中读取。但是,我找不到任何方法来检查是否有东西可以从 NSFileHandle 读取,而无需阻塞,直到有东西准备好(即使有东西准备好,当没有通过 Xcode 启动时,阻塞也会由于某种原因保持阻塞)。

所以我希望有两种解决方案之一:1)通过某种方法来纠正 NSRunLoop 的任何问题,即当管道的 NSFileHandle 中有东西准备好时,通知/回调块不会被触发。或 2) 某种方法来检查管道的 NSFileHandle 中是否有准备好读取的内容,而不会阻塞,直到准备好读取某些内容。

谢谢你的帮助!!!!