问题标签 [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.
objective-c - 使用 NSPipe、NSTask 进行进程间通信
我需要使用 NSPipe 通道实现两个线程之间的通信,问题是我不需要通过指定此方法来调用终端命令。
我只需要写一些数据
并在另一个线程上接收此消息
例如,C# 中的此类事情可以通过 NamedPipeClientStream、NamedPipeServerStream 类轻松完成,其中管道由 id 字符串注册。
如何在 Objective-C 中实现它?
objective-c - 为什么 waitForDataInBackgroundAndNotify 不能与超过 1 个参数的实时监视器一起使用?
我从其中一个 API 中找到了以下代码,我正在尝试使用它来实时监控 vm_stat 1:
========
请查看 setArguments 行。第一个工作得很好“/usr/bin/vm_stat 1”,但是第二行不起作用“/usr/bin/vm_stat 1 | /usr/bin/awk '{print $1}'”(没有输出全部),但如果我在终端上运行它,它工作得非常好。这是为什么?
nstask - 通过 NSpipe 进行通信的独立进程
我需要使用 NSPipe 通道实现两个应用程序之间的通信。一个 NSPipe 必须写入数据,另一个必须读取数据(双向),这将在两个不同应用程序中的单独进程之间进行通信。
例如,c# 中的此类事情可以通过 NamedPipeClientStream、NamedPipeServerStream 类轻松完成,其中管道由 id 字符串注册。
任何建议如何在Objective-C中实现它?
关于,瓦迪维卢
cocoa - 通过 NSPipe 或 NSFileHandle 向 NSTask 发送 EOF
我有一个 NSTask 处理从标准输入传递的参数。参数通过NSFileHandle
.
它工作正常,但我们的命令行工具从标准输入读取输入,直到它接收到 EOF 符号(通过按 Ctrl+C)。
我认为我不能将 EOF 符号添加到 ASCII 字符串中,那么选项是什么?任何反馈表示赞赏!
提前致谢!
objective-c - NSTask:为什么从 NSPipe 读取程序会阻塞?
我使用 NSTask 运行 shell 命令并通过 NSPipe 输出数据。起初,我使用波纹管方法读取输出数据,没有任何问题。
该方法的问题是它只输出 4096 字节的数据。所以我使用while
循环来获取更多数据,修改方法如下:</p>
那么问题就出现了:程序阻塞在while
循环中,不能执行下面的语句。我确保这allData
是我想要的,但是在附加最后一个数据块之后,它被阻塞了。你能给我一些解决方案吗?谢谢。
macos - 一次使用 NSTask 的多个终端命令
我需要从 OSX 应用程序运行以下命令:
单链表。-读取/用户/用户 JPEGPhoto | 尾-1 | xxd -r -p > /Users/user/Desktop/user.jpg
我尝试了几件事,例如:
和
问题是这些方法每次调用执行一个命令,所以我必须调用它们三次(dscl/tail/xxd),这不起作用。
当我在终端中单独尝试它们时,它也不起作用。
有什么建议么?谢谢
更新:
在遵循 Ken Thomases 的好建议之后,这就是它在 swift 中的样子:
objective-c - 无法在发布模式下从 NSTask 读取标准输出
我正在阅读 NSTask 的标准输出,如下所示:
...
如果我从 Xcode 运行它,这很好。我在控制台中看到了我的任务的标准输出,并且 receivedOutputFromAlgo 被多次击中。但是,如果我存档应用程序并通过双击 .app 包运行它或从终端运行它,它就不起作用。如果我从那里运行它,我仍然可以在 console.app 或终端中看到任务标准输出。
在这一点上它不被认为是标准输出吗?为什么这行不通?
编辑:我只是尝试在发布中关闭优化,但也没有用。
objective-c - 使用 NSTask 运行 adb 命令
我正在构建一个简单的 GUI 来在 Cocoa 中运行 ADB 命令。我发现了几篇不同的文章,说如何使用 NSTask 运行 shell 命令,但没有特定于 ADB,而且我无法理解。
我可以运行简单的 ADB 命令,例如
- adb devices
-adb reboot
功能
称呼
以上工作正常,但是当我传递一个更复杂的参数时:
我只是得到控制台输出,就好像我刚刚进入adb
终端一样。如何打包 NSTask 的命令和参数以运行 ADB 命令?
macos - NSPipe 不返回所有数据
我在这个问题上挣扎了很长时间。
我正在使用 与其他程序通信NSPipe
,一切正常,除非我收到通知NSFileHandleDataAvailableNotification
,但我没有获得所有可用数据。
到目前为止,我发现管道的读取部分确实收到了数据可用的通知,只是还没有完全完成(写入)。如果我在收到此通知后立即阅读它,我只会得到部分回复。但是如果我将线程设置为睡眠例如 0.1 秒然后读取,一切正常。
有什么方法可以确定我会从管道中得到完整的响应吗?
到目前为止,我有:
当然通知观察者被设置。它的选择器是:
swift - 在 Swift 中调用 Gnuplot
我正在尝试从 swift 调用 gunplot 以在.png
. 但是,下面的程序不起作用 --- 结果1.png
文件是空的。但是,如果我离开“set term aqua”,它会调用带有绘图的 aqua 窗口。但是,当我尝试将输出设置为文件(png 或 pdf)时,结果始终是一个空文件。
gnuplot 命令没问题——我可以手动正确运行它们。
我对 swift 和管道都是新手,所以请告诉我代码是否有问题或不推荐。