之前已经讨论过这个问题,但是我对这些回复感到挣扎,所以希望根据我的情况做出更明确的答案:
我正在开发一个32位Windows下的C ++应用程序(最低要求是WinXP),它需要跨两个进程进行通信。
提示是进程1(p1)需要启动进程2(p2),然后调用p2的各种函数。我需要p1来停止它正在做的事情,直到它调用的p2函数完成,然后继续它停止的地方。
对我来说,最好的研究方法是什么,以便我可以做这样的事情?
一切顺利,
克里斯
答案 0 :(得分:3)
我知道远程过程调用听起来更性感,因为它不需要设计自己的“通信协议”并序列化您自己的请求和响应,但是如何编写通过anonymous pipe或套接字进行通信的两个进程呢? ?
您可以让第二个进程继承管道/套接字的句柄。然后,它可以通过在管道上阻塞请求来简单地处理来自第一个进程的请求。第一个进程可以简单地在管道/套接字上写一个请求,并通过阻塞套接字来等待回复。
答案 1 :(得分:2)
如果仅关于在其他进程中调用函数/方法而只有Windows,您还可以查看Microsoft Remote Procedure Call。
如果你需要共享大量数据,你最好使用命名的信号量和共享内存。
答案 2 :(得分:1)
Win32中的互斥锁是跨进程同步。您还可以考虑使用条件变量,但我不确定是否存在跨过程变量。
答案 3 :(得分:0)
尝试阅读Win32信号量,或许强调基于信号量的Win3e2事件。事件允许p1< - > p2通讯。如果这两个进程需要来回传递大量值,则可以阅读共享内存。这两种机制都是非常标准和通常的进程间通信方式。