- 以id创建事件
char name[] = "myevent";
HANDLE event = CreateEventA(NULL, FALSE, FALSE, name); - 设置事件
SetEvent(event);
- 关闭事件
CloseHandle(event);
- 另一个进程打开事件
HANDLE event = OpenEventA(EVENT_ALL_ACCESS, TRUE, name);//打开事件
- 然后等待事件
DWORD res = WaitForSingleObject(event, );
- 等待结果
case WAIT_OBJECT_0:
printf("收到信号-------");
break;
case WAIT_TIMEOUT:
printf("超时没有收到-------");
break;
case WAIT_ABANDONED:
printf("另外一个进程意外终止-------");
break;
完整代码:
event.c
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h> char name[] = "myevent";
//mutex可以感知丢失,event无法感知
void main()
{
HANDLE event = CreateEventA(NULL, FALSE, FALSE, name);
printf("创建成功");
char ch = getch(); SetEvent(event);
printf("触发event");
CloseHandle(event); system("pause");
}
wait.c
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h> char name[] = "myevent"; void main()
{
HANDLE event = OpenEventA(EVENT_ALL_ACCESS, TRUE, name);//打开事件 if (event == NULL)
{
printf("打开失败");
system("pause");
return;
}
printf("等待-------");
DWORD res = WaitForSingleObject(event, );
switch (res)
{
case WAIT_OBJECT_0:
printf("收到信号-------");
break;
case WAIT_TIMEOUT:
printf("超时没有收到-------");
break;
case WAIT_ABANDONED:
printf("另外一个进程意外终止-------");
break;
default:
break; }
CloseHandle(event); system("pause");
}