c ++ - Kommunikation mellem to processer

Indlæg af Hanne Mølgaard Plasc

Problem



Dette er blevet diskuteret før, men jeg har kæmpet for svarene, så håbet på et klarere svar skræddersyet til min situation:


Jeg udvikler en applikation i C ++ under 32-bit Windows (minimumskrav er WinXP), som skal kommunikere på tværs af to processer.


Opgaven er, at proces 1 (p1) skal starte proces 2 (p2) og derefter kalde forskellige funktioner i p2. Jeg har brug for p1 for at stoppe, hvad det gør, indtil p2-funktionen, som den kalder, er færdig, og fortsæt derefter, hvor den er slukket.


Hvad ville være den bedste slags metoder for mig at undersøge, så jeg kan gøre noget som dette?


Alt det bedste,


Chris

Bedste reference


Mutexes i Win32 er kryds-proces synkronisering. Du kan også se på at bruge en betingelsesvariabel, men jeg er ikke sikker på, om der findes tværprocessede sorter af dem.

Andre referencer 1


Jeg ved, at Remote Procedure Call lyder mere sexet, da det fjerner behovet for at designe din egen 'kommunikationsprotokol' og serialisere dine egne ønsker og svar, men hvad med bare at skrive to processer, der kommunikerer gennem et anonymt rør eller sokkel? [1]


Du kan få den anden proces at arve et håndtag til rør/stikkontakten. Derefter kan den simpelthen betjene anmodninger fra den første proces ved at blokere på røret til en anmodning. Den første proces kan simpelthen skrive en anmodning på rør/stikkontakten og vente på svaret ved at blokere på stikket.

Andre referencer 2


Hvis det kun handler om at kalde funktioner/metoder i den anden proces og kun Windows, kan du også kigge på Microsoft Remote Procedure Call.

Hvis du har brug for at dele masser af data, er du bedre med de navngitte semaforer og delt hukommelse. [2]

Andre referencer 3


Prøv at læse om Win32 semaforer, måske understrege semaphore-baserede Win3e2-arrangementer. Begivenheder tillader p1 < -> p2 kommunikation. Hvis de to processer skal passere mange værdier frem og tilbage, kan du læse om delt hukommelse. Begge disse mekanismer er meget standardiserede og sædvanlige måder at kommunikere på tværs af.