问题标签 [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.
c# - 在 C# 应用程序运行时将信息从 C# 应用程序传递到 C++ 应用程序的最佳方式是什么?
在运行时将信息从 Windows 窗体 C# 应用程序传递到 MFC C++ 应用程序的最佳方法是什么?我不需要发送太多,只需发送一个小字符串。
谢谢,杰夫
linux - D-Bus 的底层传输是什么?
D-Bus 允许程序进行通信。这个IPC是如何实现的?Unix域套接字,共享内存+信号量,命名管道,还有什么?也许是一个组合?
c - 在 C 中使用管道进行父子 IPC 会导致程序阻塞
我正在编写一个服务器,当它接受套接字连接时,fork() 会关闭子进程。
当孩子与客户沟通时,它必须将一些信息发送回父母。我正在使用管道来完成此操作。
问题是,当我尝试执行父子 IPC 时,父在读取子输入时会阻塞。这意味着,即使子进程同时运行,它们也只能一次处理一个,因为它们都在等待父进程。
我的代码看起来像这样(为简洁起见,删除了错误检查):
所以我的问题是,我该如何解决这个问题?我怎样才能让父母使用管道与孩子进行交流,而不会阻塞?
这甚至可以通过管道实现,还是我应该使用共享内存(我猜是信号量)或消息队列?(我读过这篇文章:比较 Unix/Linux IPC,但很难找到这些任务是如何实际完成的示例。)
更多细节:
我有一个执行以下操作的测试程序: 1. 连接到服务器 2. Sleep(5) 3. 断开与服务器的连接
当我运行该程序的 2 个实例时,服务器会输出以下内容:
显然一次处理每个客户。
当我删除 IPC - 当我从父子节点中删除管道 read() 和 write() 时,我得到了这个:
这就是我想要的!
关于我如何做到这一点的任何想法?(或者我应该在解决这个问题的方式上做出改变?)
(编辑:这是网络课程作业的一部分。我们正在实现一个 P2P 协议,该协议使用中央服务器来管理对等点。我们可以使用任何语言,我想我会在 C 中试一试。)
c# - 如何从其 Win32 句柄中获取 System.Windows.Form 实例?
以下代码实现了一个简单的单例,以确保我的应用程序只能运行 1 个实例。但是,如果启动另一个实例,我需要能够获取该实例的命令行参数,将它们传递给初始实例,然后终止第二个实例。
当我试图获取应用程序的第一个实例时,问题就出现了。一旦我找到了该实例的主窗体的句柄,我将它传递给该Control.FromHandle()
方法,期望得到一个MainForm
. 相反,返回值始终是null
. (Control.FromChildHandle()
给出相同的结果。)
因此,我的问题很简单:我做错了什么?这在 .NET 中是否可行?
.net - 工控机故障排除
排除 IPC 故障的最佳方法是什么?
是否有任何工具/技巧来确定问题(无需请求源代码)?
我有两个第三方组件。IPC 服务器配置和客户端配置似乎正确。然而,这两个组件不想通信。一个组件抛出一个空对象异常,我认为这是由于远程配置中的一些问题造成的......
ipc - 在 posix 的命名管道上让许多进程写入单个读取器是否会产生影响?
我正在为 POSIX (OSX) 编写一个程序,其中我将有许多进程向一个侦听器发送消息,该侦听器本质上是一个日志记录线程。所有进程都在单独的程序中运行,并且使用许多进程写入但只有一个进程读取的单个命名管道 (FIFO) 非常诱人。
问题:
1)这会工作吗?- 我可以使用 bash 设置一个具有多个写入它的进程的 fifo 来完成这项工作,所以我知道理论上这是可行的。但在实践中,有没有我在掩饰的问题?
外壳 #1
贝壳 #2 和 #3
2)如果每个作者只写相对较短的消息(< 100 字节?),那么我可以假设每个对 write() 的调用都会完整地发送给读者吗?或者,一条消息的一半是否会与来自不同作者的另一条消息的一半存在混淆?
感谢您的任何建议。
wcf - 您将如何将 wcf 服务与 Windows 服务进行通信?
两周前,我需要一种方法来将 wcf 服务与运行在同一台计算机上的 Windows 服务进行通信。Windows 服务必须从外部源获取数据并与 wcf 服务(托管在 IIS 中)共享,后者必须在客户端发出请求时提供数据。我选择用ipc来做。
我做到了,现在windows服务是ipc服务器,wcf服务是ipc客户端。这很顺利,但我认为我这样做是错误的,因为要使其正常运行,必须使用 ASPNET 帐户执行 Windows 服务,为此必须分配 ASPNET 密码帐户,当我这样做时,IIS 无法正常工作.
我正在考虑不同的选择,但在所有这些选择中,问题仍然存在。一些想法?
编辑:
我需要的是一个公开的系统,在 IIS 中托管的 Web 服务中,通过 telnet 从另一个旧系统获取数据,有点不稳定。这第二个系统的响应速度有多慢我选择在 Web 服务和旧系统之间放置一个进程(Windows 服务)。Windows 服务必须保存从旧系统收集的数据,当 wcf 服务要求它通过 ipc 一次性提供所有数据时。
sockets - 进程之间的套接字传递
有没有办法在 Windows 中的进程(不同的地址空间)之间传递套接字?
我找到了这个信息Shared Sockets,因此相信这是可能的。
"引入了 WSADuplicateSocket 函数来实现跨进程的套接字共享"...
更多信息:在 Apache 的源代码 (httpd-2.2.11-win32-src.zip) 中使用了带有注释的 api WSADuplicateSocket。
[编辑] 最近我发现这个关于这个问题的很好的样本。
在非托管世界中如何进行复制 - 套接字复制 - 第 1 部分
是否可以从非托管进程传输套接字?- 套接字复制 - 第 2 部分
winapi - Are there special considerations for a windows service to send messages to user windows?
I have to write a Windows Service application (no GUI) that will monitor an event, and if it occurs will send a standard windows message to an application. The handle of the application will be given to the service by a DLL which is then unloaded, so a windows message is the way we wish to use.
The question though is whether the service needs to do anything special to use SendMessage to the window handle, given that it might be on a different screen or something in Vista. Is this possible, and if so, what do I have to do please?
c++ - 事件可以跨进程吗?
我在一个进程中创建了一个事件并进行测试,通过管道将事件句柄发送到一个完全独立的进程(不是子线程)
当我第一次触发事件时,WaitForSingleObject 没有检测到事件,所以我猜答案是否定的,除非我错过了SECURITY_ATTRIBUTES 结构中的一些技巧?
或者我可能需要使用命名事件并调用 OpenEvent()?
在这种情况下,我无法使用窗口消息,因为我试图向 Windows 服务发出信号。我可以使用管道,但是会有很多这样的应用程序,如果可能的话,我想找到一个“低成本”的解决方案。
像内存映射文件这样的其他选项比管道有更多的开销?
你会怎么做?