Ich versuche, ein Ereignisobjekt in einer Win32-Umgebung zu verwenden, um zwei Prozesse zu synchronisieren. Im Folgenden sind die vereinfachten Code von zwei Programmen.
// 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);
}
Es ist recht einfach und funktioniert gut, wenn zwei Prozesse unabhängig voneinander gestartet werden. Es funktioniert jedoch nicht, wenn der Prozess 1 den Prozess 2 als Kindprozess startet (was im obigen Code kommentiert ist) - der SetEvent-Aufruf schlägt fehl. Was ist der Grund und die Lösung für dieses Problem?