我在 Win7 上使用 C++/CLI、.net 4.5、VS2012 进行编码。
我有一个主进程A.exe使用System::Diagnostics::Process(::Start())启动第二个进程B.exe。
第二个进程B.exe使用(本机)DLL C.dll。
在C.dll 中,我声明了一个像这样的静态:
static bool B = true;
if(B == true )
{
MyFile << "Switch true to false" << endl;
B=false;
}
MyFile << _getpid() << endl;
我得到的是 _getpid() 返回A.exe的PID ,而不是B.exe的PID 。我很难C.dll将与进程B.exe相关联,而不是A.exe。??????
此外,如果我在A.exe中多次启动B.exe (比如在一个循环中) ,则静态变量永远不会重置为 true。为什么?
我不知道它是否有帮助,但我使用:
StartProcessInfo.UseShellExecute = false;
StartProcessInfo.CreateNoWindow = true;
其他字段保持其默认值。
有人能帮我吗?
谢谢!
更新 1
最后,A.exe和B.exe都加载C.dll。但是问题仍然存在:DLL中的静态变量不应该被映射两次,每个可执行文件一次吗????当我调用写入 PID 的函数时,它来自B.exe,因为在此期间,A.exe等待B.exe完成。