用于子进程的DLL中PID的奇怪行为?

时间:2013-10-25 15:40:41

标签: .net windows dll c++-cli pid

我在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 完成。

0 个答案:

没有答案