我想在win32環境中使用事件對象來同步兩個進程。以下是兩個程序的簡化代碼。在進程間使用事件對象
// 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);
}
這很簡單,並且在兩個進程獨立啓動時運行良好。但是,當進程1啓動進程2作爲子進程(在上面的代碼中進行了註釋)時,SetEvent調用失敗時不起作用。這個問題的原因和解決方法是什麼?
感謝您的詳細解答!神奇地解決了這個問題 - 它今天終於有效,沒有修改代碼。 :(雖然我覺得我應該寫一些異常處理代碼,並且你幫了我很多。 – summerlight 2010-11-10 01:40:21