繁体   English   中英

在两个过程之间进行通信

[英]Communicating between two processes

之前已经讨论过这一点,但是我一直在努力应对,因此希望针对我的情况找到更清晰的答案:

我正在32位Windows(最低要求是WinXP)下使用C ++开发应用程序,该应用程序需要在两个进程之间进行通信。

职责是进程1(p1)需要启动进程2(p2),然后调用p2的各种功能。 我需要p1停止其正在执行的操作,直到它调用的p2函数完成为止,然后再从中断处继续执行。

什么是让我可以做这样的最好的研究方法?

祝一切顺利,

克里斯

我知道远程过程调用听起来更性感,因为它不需要设计自己的“通信协议”并序列化自己的请求和响应,但是仅编写两个通过匿名管道或套接字进行通信的进程呢?

您可以让第二个进程继承管道/插座的句柄。 然后,它可以通过阻塞请求管道来简单地处理来自第一个进程的请求。 第一个过程可以简单地在管道/套接字上写一个请求,然后通过阻塞套接字来等待回复。

如果仅涉及在其他进程中调用函数/方法并且仅用于Windows,则还可以查看Microsoft远程过程调用
如果需要共享大量数据,则最好使用命名信号量和共享内存。

Win32中的互斥对象是跨进程同步。 您也可以考虑使用条件变量,但是我不确定是否存在这些变量的跨过程变体。

尝试阅读有关Win32信号量的信息,也许强调基于信号量的Win3e2事件。 事件允许p1 <-> p2通信。 如果两个进程需要来回传递大量值,则可以阅读有关共享内存的信息。 这两种机制都是非常标准和常用的进程间通信方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM