Shell扩展中全局变量初始化

时间:2022-05-17 20:42:49
在学习Windows shell扩展编程,其中在一个文件中定义了全局变量dwFirst = 0,想实现目标:首次调用时进行一定的初始化任务,然后dwFirst = 1,代码在InvokeCommand()中调用。
结果发现程序多次进入if(dwFirst == 0){
初始化;}中执行, 难道说对全局变量dwFirst进行了多次的初始化?我不明白其中的机制,或者是我错在了哪里。
希望各位指点~谢谢!

5 个解决方案

#1


全局和静态的只会初始化一次。。。

#2


存在多个SHELL进程,每个进程中都会初始化一次。

#3


引用 2 楼 jameshooo 的回复:
存在多个SHELL进程,每个进程中都会初始化一次。

能具体说说吗?或者我要实现全局只执行一次怎么办?

#4


可以把你需要机器唯一存在的变量做到一个Service里,可搜索“windows seivice编程”看看具体做法

#5


使用共享节,共享的变量是通过共享内存的方式多个进程共享的,但变量访问需要加锁。

#1


全局和静态的只会初始化一次。。。

#2


存在多个SHELL进程,每个进程中都会初始化一次。

#3


引用 2 楼 jameshooo 的回复:
存在多个SHELL进程,每个进程中都会初始化一次。

能具体说说吗?或者我要实现全局只执行一次怎么办?

#4


可以把你需要机器唯一存在的变量做到一个Service里,可搜索“windows seivice编程”看看具体做法

#5


使用共享节,共享的变量是通过共享内存的方式多个进程共享的,但变量访问需要加锁。