问题标签 [ipc]

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 回答
1971 浏览

java - Eclipse 中的插件间通信

是否可以创建自动发现彼此的 Eclipse 插件?

我正在开发一组需要在两种主要情况下运行的插件:

  • 单独
  • 相互配合。

当单独运行时,插件应该“正常工作”,但是当它们协同运行时,它们将共享一些相同的模型内容,并且其中一个插件应该向用户提供其他插件的列表以与之共享内容。例如:

Foo Plugin 检测到以下可以与其共享本体的插件:

[ ] 栏插件

[] Baz 插件

[ ] 不要分享

Eclipse 是否提供任何内部发布/检测方法来促进对其他插件的这种自动检测?

0 投票
4 回答
784 浏览

c - 在 **portable C** 中,如何启动将命令的标准输入连接到启动器的标准输出的命令?

在 C 程序 (p1) 中,如何启动从 p1 的标准输出读取其标准输入的动态构造命令(及其参数)?

注意:

  1. 除了这个 stdout --> stdin 管道之外的方法也可以,只要 它在 Windows 和 Linux 上是可移植的。

  2. 我不能在这里使用 C++、Java、Perl、Ruby、Python 等。

此外,这是否会对其 Windows 构建有 MinGW 依赖项?

REOPENED:下面的问题为 Linux 提供了答案,但这个问题需要一种可移植的方法。 从 C 程序中执行程序

0 投票
5 回答
5628 浏览

c# - .NET 中的进程间通信

我有一个核心 .NET 应用程序需要生成任意数量的子进程。这些进程需要能够访问核心应用程序中某种形式的状态对象。

最好的技术是什么?我将在进程(位图)之间移动大量数据,因此它需要快速。

0 投票
7 回答
52067 浏览

python - 如何使用 Python 启动应用程序实例?

我正在创建一个 Python 脚本,它在其中执行一系列任务,其中一项任务是启动和打开 Excel 实例。在我的脚本中实现这一目标的理想方式是什么?

0 投票
5 回答
1990 浏览

java - Java IPC:GUI 和命令行

我想为 Java 应用程序实现一个命令行界面。这不会太难做到,除非我希望命令行程序影响另一个 Java GUI 程序的状态。例如,我可以输入:

另一个正在运行的 GUI 实例将执行适当的操作。

实现这样的事情的最简单方法是什么?

0 投票
2 回答
1540 浏览

c++ - 跨平台双向 IPC

我有一个我认为会相对容易的项目,但结果却是我所希望的更多痛苦。首先,我与之交互的大部分代码都是我无法控制的遗留代码,因此我无法进行大的范式更改。

这是我需要做的简单解释:假设我有大量从标准输入读取并写入标准输出的简单程序。(这些我不能碰)。基本上,标准输入的输入是“将温度设置为 100”之类的命令或类似的命令。并且输出是事件“温度已设置为 100”或“温度已降至设定值以下”。

我想做的是编写一个应用程序,它可以启动一堆这些简单的程序,监视事件,然后根据需要向它们发送命令。我最初的计划是使用类似 popen 的东西,但我需要一个双向的 popen 来获得读写管道。我一起破解了一些我称之为popen2的东西,在那里我将运行命令和两个填充了读写流的FILE *传递给它。然后我需要做的就是编写一个简单的循环,从每个进程的每个标准输出中读取,执行它需要的逻辑,然后将命令写回正确的进程。

这是一些伪代码

真正的程序更复杂,它在流中查看是否有任何东西在等待,如果没有,它将跳过该进程,同样,如果它不需要向某个进程发送命令,它不需要。但是这段代码给出了基本的想法。

现在这在我的 UNIX 机器上工作得很好,甚至在带有 cygwin 的 Windows XP 机器上也很好。但是,现在我需要让它在本地运行在 Win32 上。

困难的部分是我的 popen2 使用 fork() 和 execl() 来启动进程并将流分配给子进程的标准输入和标准输出。有没有一种干净的方法可以在 Windows 中做到这一点?基本上,我想创建一个popen2,它在windows 中的工作方式与我的unix 版本相同。这样,唯一的 Windows 特定代码将在该函数中,我可以摆脱其他一切以相同方式工作的情况。

有任何想法吗?

谢谢!

0 投票
8 回答
5285 浏览

cross-platform - Cross-platform, cross-language messaging system?

I'm developing a set of applications that work together to create a system for processing metering data. There's several reasons I want to have them loosely coupled and the system should be extensible by third parties, so the apps will be tied together via messaging.

I'm looking for a messaging system that offers bindings in (at least) C#, Java and Python and supports messaging patterns like Publish-Subscribe, Guaranteed Delivery, Selective Consumer (like Peek in .Net Messaging).

As far as I could find out, there's nothing wrong with JMS or .Net Messaging, it's just that they are for .Net / Java only.

The system should give me control over which transport mechanism (Sockets, Message Queues, etc.) to use when setting up a channel. I want to be able to both scale out to remote machines and speed things up with local transport facilities.

If I can't find anything suitable, I'll have to roll my own. I'd probably use Google's protocol buffers for serialization. If anybody has other recommendations for technology options, fire away.

Oh, yes - and I would like to have optional encryption on a per-channel or per-message basis.

ETA: Thanks for all the quick replies. I'm working my way through the docs & propaganda now. Has anybody used the technologies below, and for what / with what results?

0 投票
2 回答
114 浏览

security - 从一个应用程序远程发布到另一个应用程序。安全问题?

如果让我们在一个应用程序中向另一个应用程序隐藏帖子以使用该应用程序功能,是否存在任何安全问题?

0 投票
5 回答
12677 浏览

c - 如何阻止 sem_open() 因 ENOSYS 失败?

我有两个 Slackware Linux 系统,POSIX 信号量sem_open()调用失败,errno 设置为 38。下面重现的示例代码(代码在 CentOS / RedHat 上运行良好)。

是否有任何内核或系统配置选项可能导致此问题?其他建议?

有问题的系统是 Slackware 10.1.0 内核 2.6.11 /lib/librt-2.3.4.so /lib/libpthread-0.10.so,但相同的代码适用于更旧的 RedHat 9 内核 2.4.20 /lib/librt -2.3.2.so /lib/tls/libpthread-0.29.so。(也适用于 CentOS 5 内核 2.6.18 /lib/librt-2.5.so /lib/i686/nosegneg/libpthread-2.5.so)。

man sem_opensem_open()表明系统不支持此 errno 方法。

sem_open()用户空间是librt我们动态链接的地方,并且存在librt于受影响的系统上。

受影响的系统声称支持 POSIX 信号量:_POSIX_SEMAPHORES是真的并sysconf(_SC_SEMAPHORES)证实了这一点。

谢谢,基兰

编辑 1:我添加了有关正在使用的软件版本的更多详细信息,并删除了一些不相关的评论。

编辑 2: /dev/shm 安装在好的系统上,而不是安装在坏的系统上。安装它并没有改变受影响系统上的行为。我认为 /dev/shm 也是必要的,但 sem_open() 在此之前失败了,并且 strace 支持这一点。

0 投票
4 回答
389 浏览

java - 将图像从 C 程序移动到 Java 并显示在屏幕上的最有效方法是什么?

背景

我正在使用 video4linux 2 规范捕获视频。它是使用 C 程序实时捕获的。我还有一个可以在本地和远程运行的 Java 前端。远程端很简单,我只需将图像压缩为 JPEG,然后通过 mini-http 服务器将它们发送到客户端,客户端将它们解压缩并显示在屏幕上。

当我们在本地运行时,我希望通过某种方式 IPC 直接连接到该内存并从 Java 访问图像。然后,使用尽可能少的 CPU 资源将它们粘贴到屏幕上。这是一个“监视”类型的系统,所以我可以同时运行 8-16 个摄像机源。

问题

将图像数据(YUV420P)从 v4l2 mmap 缓冲区移动到我的 Java 应用程序以在屏幕上显示的最有效方法是什么?如果有可用的,请显示代码或指向一些 api/specs。

回答

考虑到时间,我决定只使用普通的套接字并以 RGB 格式发送数据。当 Java 客户端在同一台机器上运行时,我能够显着提高性能。如果客户端远程运行,我仍然会通过网络发送 JPEG。接下来,我需要找到一个优化的 JPEG 解码器。

顺便说一句,这不是 2 个客户端,只是我的 CameraStream 小部件读取并解析这两种类型。