event跨进程通信

 

event天生的弱势,只有mutex可以感知丢失,就是将另一个进程关闭了,event无法感知。

event1:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

char name[100] = "haihualovefang";

void main()
{
    HANDLE event = CreateEventA(NULL, FALSE, FALSE, name);
    printf("创建成功");
    char ch = getch();

    SetEvent(event);
    printf("触发event");
    CloseHandle(event);

    system("pause");
}

 

event2:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

char name[100] = "haihualovefang";

void main()
{
    HANDLE event = OpenEventA(EVENT_ALL_ACCESS, TRUE, name);//打开事件

    if (event == NULL)
    {
        printf("打开失败");
        system("pause");
        return;
    }
    printf("等待-------");
    DWORD res = WaitForSingleObject(event, 20000);
    switch (res)
    {
    case WAIT_OBJECT_0:
        printf("收到信号-------");
        break;
    case WAIT_TIMEOUT:
        printf("超时没有收到-------");
        break;
    case WAIT_ABANDONED:
        printf("另外一个进程意外终止-------");
        break;
    default:
        break;

    }
    CloseHandle(event);




    system("pause");
}

 

posted @ 2016-08-21 09:51  芬乐  阅读(615)  评论(0编辑  收藏  举报