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

c++ - C++中进程间通信的最佳方式

我有两个进程,一个将查询另一个数据。在有限的时间内(每秒 10000 次)将有大量查询,每秒将传输数据(>100 mb)。数据类型将是整数类型(双,int) 我的问题是用哪种方式连接这个过程?

共享内存、消息队列、lpc(本地过程调用)或其他......

我还想问你推荐哪个图书馆?顺便说一句,请不要建议 MPI。编辑:在 windows xp 32 位下

0 投票
3 回答
830 浏览

c++ - 如何在 win32 中为 RichEdit 设置回调机制

在win32中,我如何为我自己没有创建的RichEdit设置回调机制?

第1部分

我正在阅读另一个应用程序 GUI 中的 textedit 字段。这现在工作得很好,除了第一次阅读后我只想获取新的或修改的行。在 GTK+ 或 Qt 中,我只需在字段更改时编辑的某些信号上安装回调,但它在 Win32 上如何工作?

我的 MSDN 搜索结果没有任何用处,可能是因为我不知道要搜索的确切术语。textedit 的类是RichText20W,它有一些可能以某种方式使用的消息,尽管那篇文章只是讨论了将它们用于类的父级。

第2部分

另外,如果没有这样的“文本更改,这里是新插入的文本”回调立即返回新内容,我需要一些方法来轻松检测新内容。从我的头顶:

  1. 在我们阅读的文本块的末尾有一个标记,并且只在它和结尾之间阅读。
  2. 存储我们之前读过的内容,并在第二次阅读后,从后者中删除重复的部分以获取新插入的内容。

选项 2 可能不可行,因为 textedit 可以包含任意数量的文本。标记部分听起来可行,但再一次,我微弱的 Win32 技能和可怕的 Win32 函数名称使我无法找到正确的方法。

请注意,对于我拥有且未创建的文本编辑器,所有这些都必须是可行的,它们属于第三方进程。

高度赞赏 C++ 中的代码示例。

免责声明

显然,如果有更好的方法,请告诉我。根据我之前使用 GTK+/Qt 的经验,我只假设回调是可行的方法。随意告诉我路径:)

0 投票
4 回答
38911 浏览

linux - 比较 Unix/Linux IPC

Unix/Linux 提供了许多 IPC:管道、套接字、共享内存、dbus、消息队列……

每种最适合的应用程序是什么,它们的性能如何?

0 投票
6 回答
1047 浏览

perl - Perl 中中型数据的最佳 IPC 机制是什么?

我正在用 Perl 设计一个多层应用程序,我想知道我可以使用的各种 IPC 机制的优缺点。我正在研究处理中等大小的数据,通常为几十 KB,但最多为几兆字节,并且负载非常轻,每分钟最多几百个请求。

我主要关心的是可维护性和性能(按此顺序)。我认为我不需要扩展到一台以上的服务器,或者从我们的主平台 (RHEL) 移植,但我认为这是需要考虑的事情。

我可以想到以下选项:

  • 临时文件 - 简单,可能是速度和存储要求方面最差的选择
  • UNIX 域套接字 - 不可移植,不可扩展
  • Internet Sockets - 便携、可扩展
  • 管道 - 可移植,不可扩展(?)

考虑到可扩展性和可移植性不是我最关心的问题,我需要了解更多。什么是最好的选择,为什么?如果您需要更多信息,请发表评论。


编辑:我将尝试提供更多详细信息以回答ysth 的问题 (警告,文字墙如下)

  • 读者/作者是一对一的关系,还是更复杂的关系?
  • 如果读者不在或忙,你希望作者怎么办?
  • 反之亦然?
  • 关于您想要的用途,您还有哪些其他信息?

在这一点上,我正在考虑采用三层方法,但我不确定每一层有多少进程。我认为我需要在左侧有更多的流程,而在右侧有更少的流程,但也许我应该有相同的数字:

这些名称仍然是通用的,可能不会以这些形式进入实现。

请求管理器负责监听来自不同接口的请求,例如 Web 请求和 CLI(响应时间很重要)和电子邮件(响应时间不太重要)。它执行日志记录并管理对请求的响应(以适合请求类型的格式呈现)。

它将有关请求的数据发送到业务逻辑,业务逻辑根据业务规则执行日志记录、授权等。

然后业务逻辑(如果需要)从数据层请求数据,数据层可以(最常见)与内部 MySQL 数据库或我们团队无法控制的其他数据源(例如,我们组织的主 LDAP 服务器或我们的DB2 员工信息数据库等)。这主要是一个简单的包装器,它以统一的方式格式化数据,以便在业务逻辑中更容易地处理它。

然后信息流回请求管理器进行呈现。

如果,当数据向右流动时,读者很忙,对于交互式请求,我只想等待一段合适的时间,如果我在这段时间内没有访问权限,则返回超时错误(例如“稍后再试”)。对于非交互请求(例如电子邮件),轮询系统可以简单地退出并在下一次调用时重试(可能每 1-3 分钟一次)。

当数据在另一个方向流动时,不应该有任何等待的情况。如果在尝试返回左侧时其中一个进程已经死亡,那么我真正能做的就是登录并退出。

无论如何,这非常冗长,而且由于我仍处于早期设计阶段,因此我可能仍然有一些混乱的想法。我提到的一些内容可能与使用哪个 IPC 系统的问题无关。我对设计的其他建议持开放态度,但我试图将问题限制在范围内(例如,也许我应该考虑分解为两层,这对于 IPC 来说要简单得多)。你怎么认为?

0 投票
1 回答
223 浏览

ipc - 如何计算不同机器上的统计数据并再次组合它们?

我有两个提供相同功能的后端应用程序,它们位于两台不同的机器上(实际上这是为了进行负载平衡)。所以他们使用相同的方式处理客户端前端请求。

我想收集有关所有连接的客户端的一些统计信息(即:客户端 GUI 应用程序中最常用的组件是什么或类似的东西)并每秒将结果发送给所有客户端。

我正在考虑分别计算每个后端组件上的这些统计信息并将两者加在一起,在这种情况下,我有一组选项,例如在后端组件之间进行某种通信,或者只是在全局数据库中创建小表,然后每个后端更新表然后选择并发送给它的客户,但这可能会降低性能,因为我想每秒发送一次统计信息

我需要帮助

0 投票
3 回答
5290 浏览

java - 从 Java 调用 Python 模块

我有一个用 C - igraph(库的名称)编写的图形库的 Python 接口。我的需要是从 Java 代码中调用与此图形库有关的 python 模块。就像这样,库的核心是在 c 中。该内核已导入 Python,并且内核中嵌入的函数的接口在 Python 中可用。我项目的其余代码是用 Java 编写的,因此我也想用 Java 调用图形函数。Jython - 允许您在 Java 中调用 python 模块是一个选项。我继续尝试 Jython 发现它在我的情况下不起作用,因为核心代码在 C 中,并且 Jython 不支持在 python 中作为 ac dll 导入的任何内容代码。我也想过选择直接在c中调用图形例程的方法。那是不通过 Python 代码。我假设一定有一些东西可以让你从 Java 调用 c 代码,但是我在 C 方面做得不好,所以我没有去。我最后的手段似乎是使用 Java 从命令行执行 Python 解释器。但那是一种肮脏和无耻的行为。此外,为了处理 Python 代码产生的结果,我必须将结果写入文件并用 java 读回。再次肮脏的方式。有什么可以建议我的吗?感谢每一位付出的时间。有什么可以建议我的吗?感谢每一位付出的时间。有什么可以建议我的吗?感谢每一位付出的时间。


感谢伊格尔的回答。我看过了。乍一看,它似乎只是在调用 python 脚本。

如果从命令行通过 Java 代码调用 python 解释器,这不是很相似吗?

关心的是如何使用 Python 脚本生成的结果。天真的方法是将它们写入文件并用 Java 读回。我正在寻找一种更聪明的方法。无论如何,感谢您的建议。

0 投票
6 回答
1530 浏览

windows - 向 Windows 服务发送密码

向 Windows 服务发送密码的最佳方式是什么?我们的应用程序需要密码才能启动。我不在乎服务“通常”应该在没有用户交互的情况下运行。操作员可以启动应用程序然后注销,这对我们来说已经足够了。

在 unix 系统上,我只会通过标准输入回显密码,但服务没有标准输入。

目前,我们使用 DPAPI 仅使用 CryptProtectData 存储密码。虽然这可行,但它提出了其他开始变得麻烦的问题。

我猜我需要在服务和发送密码的应用程序之间使用某种形式的 IPC,但我不确定哪种方法合适(如果有的话)。

谢谢

0 投票
1 回答
1654 浏览

python - Vista UAC(用户访问控制)的python IPC(进程间通信)

我正在 (wx)python 中编写文件管理器 - 很多已经有效。复制文件时已经有一个进度对话框,覆盖处理等。

现在在 Vista 中,当用户想要将文件复制到某些目录(例如 %Program Files%)时,应用程序/脚本需要提升,在运行时不能要求提升。所以我必须启动另一个提升的应用程序/脚本,它可以完成工作,但需要与主应用程序通信,因此后者可以更新进度等。

我搜索并发现很多文章说共享内存和管道是最简单的方法。所以我正在寻找的是一个“高级”平台独立的ipc库,它使用共享内存或管道进行python绑定。

我已经找到了 ominORB、fnorb 等。它们看起来很有趣,但是使用 TCP/IP,是否有使用共享内存或管道的等效库?由于 ipc-client 总是在同一台机器上,因此这里似乎不需要套接字。而且我还担心用户必须在他/她的个人防火墙上允许 ipc-socket-communications。

编辑:我的意思是高级别的:能够像使用omniORB而不是将字符串发送到stdin/stdout时那样调用一些函数会很棒。

0 投票
2 回答
4356 浏览

c# - 从一个正在运行的控制台应用程序向另一个应用程序发送消息

我有一个控制台应用程序正在与 ftp 服务器进行长时间的同步。
另一个控制台应用程序准备一个本地文件系统,其中包含一些需要的更新文件。
然后第二个将等待第一个完成,然后交换最终目录名称,使其在网络上可见。

我搜索了使同步应用程序与第二个应用程序通信它已完成工作的最佳方法。看起来为 IPC 使用数据复制是最适合此问题的解决方案。

问题有两个:

  • 我对吗?有没有更直接的方法来获得相同的结果?
  • 是否有托管(.net)方式来做到这一点?
0 投票
3 回答
18588 浏览

windows - 适用于 Windows 的 D-Bus 等效项

有人知道 Windows 的 Linux/D-Bus 机制吗?

谢谢