问题标签 [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 投票
1 回答
2461 浏览

objective-c - 使用 NSPipe、NSTask 进行进程间通信

我需要使用 NSPipe 通道实现两个线程之间的通信,问题是我不需要通过指定此方法来调用终端命令。

我只需要写一些数据

并在另一个线程上接收此消息

例如,C# 中的此类事情可以通过 NamedPipeClientStream、NamedPipeServerStream 类轻松完成,其中管道由 id 字符串注册。

如何在 Objective-C 中实现它?

0 投票
1 回答
1220 浏览

objective-c - 为什么 waitForDataInBackgroundAndNotify 不能与超过 1 个参数的实时监视器一起使用?

我从其中一个 API 中找到了以下代码,我正在尝试使用它来实时监控 vm_stat 1:

========

请查看 setArguments 行。第一个工作得很好“/usr/bin/vm_stat 1”,但是第二行不起作用“/usr/bin/vm_stat 1 | /usr/bin/awk '{print $1}'”(没有输出全部),但如果我在终端上运行它,它工作得非常好。这是为什么?

0 投票
0 回答
139 浏览

nstask - 通过 NSpipe 进行通信的独立进程

我需要使用 NSPipe 通道实现两个应用程序之间的通信。一个 NSPipe 必须写入数据,另一个必须读取数据(双向),这将在两个不同应用程序中的单独进程之间进行通信。

例如,c# 中的此类事情可以通过 NamedPipeClientStream、NamedPipeServerStream 类轻松完成,其中管道由 id 字符串注册。

任何建议如何在Objective-C中实现它?

关于,瓦迪维卢

0 投票
1 回答
667 浏览

cocoa - 通过 NSPipe 或 NSFileHandle 向 NSTask 发送 EOF

我有一个 NSTask 处理从标准输入传递的参数。参数通过NSFileHandle.

它工作正常,但我们的命令行工具从标准输入读取输入,直到它接收到 EOF 符号(通过按 Ctrl+C)。

我认为我不能将 EOF 符号添加到 ASCII 字符串中,那么选项是什么?任何反馈表示赞赏!

提前致谢!

0 投票
1 回答
502 浏览

objective-c - NSTask:为什么从 NSPipe 读取程序会阻塞?

我使用 NSTask 运行 shell 命令并通过 NSPipe 输出数据。起初,我使用波纹管方法读取输出数据,没有任何问题。

该方法的问题是它只输出 4096 字节的数据。所以我使用while循环来获取更多数据,修改方法如下:</p>

那么问题就出现了:程序阻塞在while循环中,不能执行下面的语句。我确保这allData是我想要的,但是在附加最后一个数据块之后,它被阻塞了。你能给我一些解决方案吗?谢谢。

0 投票
1 回答
909 浏览

macos - 一次使用 NSTask 的多个终端命令

我需要从 OSX 应用程序运行以下命令:

单链表。-读取/用户/用户 JPEGPhoto | 尾-1 | xxd -r -p > /Users/user/Desktop/user.jpg

我尝试了几件事,例如:

问题是这些方法每次调用执行一个命令,所以我必须调用它们三次(dscl/tail/xxd),这不起作用。

当我在终端中单独尝试它们时,它也不起作用。

有什么建议么?谢谢

更新:

在遵循 Ken Thomases 的好建议之后,这就是它在 swift 中的样子:

0 投票
1 回答
276 浏览

objective-c - 无法在发布模式下从 NSTask 读取标准输出

我正在阅读 NSTask 的标准输出,如下所示:

...

如果我从 Xcode 运行它,这很好。我在控制台中看到了我的任务的标准输出,并且 receivedOutputFromAlgo 被多次击中。但是,如果我存档应用程序并通过双击 .app 包运行它或从终端运行它,它就不起作用。如果我从那里运行它,我仍然可以在 console.app 或终端中看到任务标准输出。

在这一点上它不被认为是标准输出吗?为什么这行不通?

编辑:我只是尝试在发布中关闭优化,但也没有用。

0 投票
1 回答
515 浏览

objective-c - 使用 NSTask 运行 adb 命令

我正在构建一个简单的 GUI 来在 Cocoa 中运行 ADB 命令。我发现了几篇不同的文章,说如何使用 NSTask 运行 shell 命令,但没有特定于 ADB,而且我无法理解。

我可以运行简单的 ADB 命令,例如
- adb devices
-adb reboot

功能

称呼

以上工作正常,但是当我传递一个更复杂的参数时:

我只是得到控制台输出,就好像我刚刚进入adb终端一样。如何打包 NSTask 的命令和参数以运行 ADB 命令?

0 投票
0 回答
107 浏览

macos - NSPipe 不返回所有数据

我在这个问题上挣扎了很长时间。

我正在使用 与其他程序通信NSPipe,一切正常,除非我收到通知NSFileHandleDataAvailableNotification,但我没有获得所有可用数据。

到目前为止,我发现管道的读取部分确实收到了数据可用的通知,只是还没有完全完成(写入)。如果我在收到此通知后立即阅读它,我只会得到部分回复。但是如果我将线程设置为睡眠例如 0.1 秒然后读取,一切正常。

有什么方法可以确定我会从管道中得到完整的响应吗?

到目前为止,我有:

当然通知观察者被设置。它的选择器是:

0 投票
2 回答
524 浏览

swift - 在 Swift 中调用 Gnuplot

我正在尝试从 swift 调用 gunplot 以在.png. 但是,下面的程序不起作用 --- 结果1.png文件是空的。但是,如果我离开“set term aqua”,它会调用带有绘图的 aqua 窗口。但是,当我尝试将输出设置为文件(png 或 pdf)时,结果始终是一个空文件。

gnuplot 命令没问题——我可以手动正确运行它们。

我对 swift 和管道都是新手,所以请告诉我代码是否有问题或不推荐。