标签:
// temp10.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <Windows.h> #include <string> #include <iostream> #include <time.h> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { HANDLE handle=::CreateEventA(nullptr,TRUE,FALSE,"__hello=============__"); if(ERROR_ALREADY_EXISTS==GetLastError()) { printf("existed %p\n",handle); ::SetEvent(handle); } else { printf("new %p\n",handle); ::WaitForSingleObject(handle,INFINITE); printf("it is signaled now!"); } getchar(); return 0; }
编译上面的代码,生成exe文件。
双击exe文件,打开程序,界面如下:
接着,再双击exe文件打开程序,界面如下:
可见,多个进程获取同一个内核对象,他们的句柄是一样的。
接下来,把第一个程序关闭。再双击exe文件打开程序,界面如下:
第一个创建内核对象的进程已经退出,但是还有进程持有这个内核对象。
接着,把这两个进程关闭,然后双击exe文件打开程序,界面如下:
这是一个新的内核对象,虽然它的句柄还是一样的。可见,只有当没有任何进程只有这个内核对象了,内核对象才会被销毁。
完。
标签:
原文地址:http://www.cnblogs.com/liyou-blog/p/4885845.html