J'essaie d'utiliser l'objet événement dans l'environnement win32 pour synchroniser deux processus. Voici le code simplifié de deux programmes.Utilisation de l'objet événement dans l'inter-processus
// process1
int main()
{
HANDLE h = CreateEvent(NULL, FALSE, FALSE, TEXT("Hello"));
WaitForSingleObject(h, INFINITE);
// RunProcess(L"process2.exe", L"");
}
// process2
int main()
{
HANDLE h = OpenEvent(EVENT_MODIFY_STATE, FALSE, TEXT("Hello"));
SetEvent(h);
}
C'est assez simple et fonctionne bien lorsque deux processus sont lancés indépendamment. Cependant, cela ne fonctionne pas lorsque le processus 1 lance le processus 2 en tant que processus enfant (ce qui est commenté dans le code ci-dessus) - l'appel SetEvent échoue. Quelle est la raison et la solution de ce problème?
Merci pour votre réponse détaillée!Le problème a été résolu par magie - cela fonctionne finalement aujourd'hui, sans modification du code. :(Bien que je pense que je devrais écrire un code de gestion des exceptions et vous m'avez beaucoup aidé. – summerlight