`
huozheleisi
  • 浏览: 1235896 次
文章分类
社区版块
存档分类
最新评论

如何知道一个进程运行了多少个实例?

 
阅读更多
在编写程序的时候,有时我们可能需要知道一个进程运行了多少个实例。首先你可能会想到使用全局变量,但试验结果表明全局变量只在当前进程的范围内有效,一旦你为当前EXE起了另外一个新的进程,为了保证一个进程对全局变量的修改不至于对其他实例造成影响,系统对这些变量采用多份COPY的办法(虽然在启动一个EXE的多个实例进程时系统尽量采用共享内存代码的办法),所以你修改全局变量的值进在当前实例有效。 实际上编译器或者MICROSOFT为你提供了一个可行的办法,对某些CODE进行各个实例之间共享。 VC编译器最终为你生成的EXE或DLL是分为许多节的(具体参见《WINDOWS核心编程》),其中就有一个叫共享节的,在本节中定义的变量在系统级别是共享的,也就是说多个实例可以共享改变量。VC编译器有个/SECTION开关,具体如下: /SECTION:name,attributes 其中name使用Shared就可以了,attributes用来设置对此节的操作属性。不过可以在程序中直接使用下面的语句来达到同样的效果: #pragma comment(liner,"/SECTION:Shared,RWS") 代码实例: #pragma data_seg("Shared") volatile int g_iAppInstance = 0; #pragma data_seg() #pragma comment(linker,"/Section:Shared,RWS") 将上面的代码放到你的main函数之前,在main函数对g_iAppInstance加1,结束的时候减1。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics