问题标签 [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.
macos - 在 Swift 中修改 NSTextField 的 stringValue
我试图通过改变它NSTextField
的来源来改变它的内容,但它给了我一个错误。ViewController
stringValue
AppDelegate
中的代码AppDelegate
是:
它从以下位置调用ViewController
:
并且NSTextField
是IBOutlet
较早创建的:
并尝试稍后修改:
但我得到的只是
致命错误:在展开可选值时意外发现 nil
我究竟做错了什么?
objective-c - Cocoa App 和控制台应用程序之间的通信
我有两个应用程序,一个带有 UI(一个 Cocoa 应用程序)。另一个是控制台应用程序。
我的要求是在 CocoaApp 中获取用户输入并将其传递给进程到 ConsoleApp 并返回值。
我已经尝试过这样的事情,我能够发送和处理数据,但无法返回。我不能使用 NSDistibutedNotification。我用谷歌搜索并发现 NSPipe 应该可以工作,但我无法理解如何实现和使用 Pipes,请提出建议并帮助理解。
我的代码在这里:
在 CocoaApp 中:
在 ConsoleApp 中:
objective-c - 使用 NSipe 进行交互式命令
我正在我的 OS X 应用程序中启动一些交互式进程,我希望能够从管道读取和写入。
例如:启动进程将等待用户输入命令。当用户完成时(也就是按下回车键),进程将返回一些东西,然后再次等待用户。
目前,我正在使用NSPipe
类进行通信,但问题是在writeData:
调用方法时,我必须调用closeFile
才能获得通知NSFileHandleDataAvailableNotification
。
完整代码(更改文件夹路径)是这样的
请注意,我收到第一个通知(进程正在响应),但在writeData:
被调用后没有通知。
如何实现通信,即:
启动(并在应用生命周期中保持启动)
支持读写
macos - Cocoa - 创建我的应用程序的多个实例
我的要求是创建我的应用程序的多个实例。我能够成功地创建多个没有参数的实例,但是当我用我的 runCommand 传递一些参数时,它会创建我的应用程序的无限实例,为了停止这种情况,我必须强制关闭我的系统。
提前致谢 :
我的工作代码如下:
我唯一要做的就是一个一个地创建我的应用程序的多个实例。
swift - OpenSSL - 主题在 OS X 应用程序中不以“/”开头
我目前正在开发一个应用程序,该应用程序从 OS X 应用程序中的文本字段收集信息,然后访问 openssl 二进制文件以基于这些文本字段生成 CSR 和私钥。这是当前代码
但是我收到一个错误,指出Subject does not start with '/'
。希望有人能对我提出某种想法,说明为什么我的主题不是以 / 开头,尽管它显然是。
谢谢大家
swift - Swift NStask 函数
我是一个完全快速的菜鸟。在 xcode 中使用这段代码,我得到了我需要的结果。我创建了一个带有多个参数的命令行二进制“菜单栏”。我通常在终端“/bin/menubar getip”、“/bin/menubar/getuser”中运行它。我想根据以下工作代码创建一个函数。
我想将其转换为函数。
swift - 如何测试没有数据写入 NSPipe
NSPipe
最近我一直在研究一个日志框架,如果他们不希望日志消息进入控制台,我允许用户提供一个日志来关闭。
可以启用或禁用,当Logger
禁用时,不应将任何数据发送到管道中。
当记录器启用时,很容易检查数据是否已通过管道发送,因为availableData
立即包含数据,并且触发了 NSFileHandleDataAvailableNotification/readabilityHandler 块。
但是,如果您要测试数据未通过管道发送,并尝试应用availableData
不包含任何数据的相同想法,则测试将超时,因为availableData
仅在收到数据后才返回。
我想出了一个解决方案,那就是监听通知,如果 X 秒后没有收到,则满足没有收到通知的期望,前提是期望将被满足两次(导致测试失败)如果收到通知。
这种方法的问题是,如果由于某种原因,管道确实收到了一些数据,一旦在readabilityHandler
块中满足了期望,测试立即成功,并且第二次没有满足期望:
如果管道接收到数据,将导致测试失败,如果没有,则通过测试,更好的方法是什么?
swift - 如何在 Swift 中“开球” NSPipe
我正在尝试将标准输出 NSPipe 与 NSTask 之一连接起来,以获得两个 NSPipes,每个都将进入两个新 NSTasks 的标准输入。
我知道我可以在 C 中使用tee
function来做到这一点,但我在 Foundation 和 Darwin 框架中都找不到它。我怎样才能做到这一点?
cocoa - 使用 NSTask 交互式访问命令
我正在使用 NSTask 来运行交互式的 cli 应用程序。我用它通过 USB 连接提取数据。
我正在使用大纲和错误管道打开一个 NSTask,但是当我发出命令时,它可以工作,但是会在循环中旋转沙滩球,从输出中提取数据。
我希望能够混合执行帮助命令的 - (IBAction)clicked:(id)sender 按钮并返回输出:
xcode - NSFileHandle 在没有调试器的情况下运行时表现异常 - 一些 NSRunLoop 问题?
我正在为 Mac 上的 Adobe Premiere 编写一个插件,它打开一个外部应用程序,然后使用 NSPipe 和 NSFileHandle 从外部应用程序读取标准输出。我知道这样做的推荐方法包括使用 NSNotificationCenter 以及 NSFileHandle 的 readInBackgroundAndNotify 命令,或者使用 NSFilehandle 的 setReadabilityHandler 方法在输出到达时一次读取一行:
当我从 Xcode 启动带有调试器的 Premiere 时,这工作得很好。但是,当我自己运行 Premiere 时,当外部应用程序在其标准输出中放入一行时,不会调用块(或通知,如果我使用该方法)。我假设有一些奇怪的方式,当它通过 Xcode 运行时,它运行的线程有一个运行循环,当插件从 Premiere 启动时它以某种方式不活动运行。
我可以解决这个问题的一种方法是只有一个循环,每秒检查几次是否有东西要从在后台线程中运行的管道的 NSFileHandle 中读取。但是,我找不到任何方法来检查是否有东西可以从 NSFileHandle 读取,而无需阻塞,直到有东西准备好(即使有东西准备好,当没有通过 Xcode 启动时,阻塞也会由于某种原因保持阻塞)。
所以我希望有两种解决方案之一:1)通过某种方法来纠正 NSRunLoop 的任何问题,即当管道的 NSFileHandle 中有东西准备好时,通知/回调块不会被触发。或 2) 某种方法来检查管道的 NSFileHandle 中是否有准备好读取的内容,而不会阻塞,直到准备好读取某些内容。
谢谢你的帮助!!!!