这已经在之前讨论过了,但是我一直在努力应对,所以希望为我的情况量身定做一个更清晰的答案:
我正在32位Windows(最低要求是WinXP)下开发一个应用程序,它需要跨两个进程进行通信。
重点在于进程1(p1)需要启动进程2(p2),然后调用p2的各种函数。 我需要p1来停止它正在做的事情,直到它调用的p2函数完成,然后继续它停止的地方。
对我来说,研究什么才是最好的方法,以便我可以做这样的事情?
用于debuggingLinux内核的工具是什么?
delphi:如何发送命令到其他应用程序?
无法连接到打开的Excel应用程序
Windows C ++进程与线程
在Windows x86和x64下将x86.exe展开到“C: Windows System32”?
祝一切顺利,
克里斯
检测一个进程是否仍在运行
从CMD运行Microsoft TraceView
批处理脚本传递多个参数来调用
我应该为我的应用程序使用进程还是线程?
Win32中的互斥是跨进程同步。 你也可以看看使用条件变量,但我不确定是否存在跨进程的品种。
我知道远程过程调用听起来更性感,因为它消除了设计自己的“通信协议”和序列化您自己的请求和响应的需要,但是如果只写两个通过匿名管道或套接字进行通信的进程呢?
您可以让第二个进程继承管道/套接字的句柄。 然后,它可以简单地通过阻塞管道请求来处理来自第一个进程的请求。 第一个进程可以简单地在管道/套接字上写入请求,并通过在套接字上阻塞来等待回复。
如果只是在另一个进程中调用函数/方法,而只有Windows,那么还可以看一下Microsoft远程过程调用 。
如果你需要分享大量的数据,你最好使用命名的信号量和共享内存。
尝试阅读有关Win32信号,也许强调基于信号量的Win3e2事件。 事件允许p1 < – > p2通信。 如果这两个进程需要传递大量的值,那么可以阅读共享内存。 这两种机制都是非常标准和通常的进程间通信方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。