簡體   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