0

我在 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.exeB.exe都加载C.dll。但是问题仍然存在:DLL中的静态变量不应该被映射两次,每个可执行文件一次吗????当我调用写入 PID 的函数时,它来自B.exe,因为在此期间,A.exe等待B.exe完成。

4

0 回答 0