Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 子进程中使用的DLL中PID的奇怪行为?_.net_Windows_Dll_C++ Cli_Pid - Fatal编程技术网

.net 子进程中使用的DLL中PID的奇怪行为?

.net 子进程中使用的DLL中PID的奇怪行为?,.net,windows,dll,c++-cli,pid,.net,Windows,Dll,C++ Cli,Pid,我正在Win7上使用C++/CLI、.net 4.5、VS2012进行编码 我有一个主进程a.exe,它使用System::Diagnostics::process(::Start())启动第二个进程B.exe 第二个进程B.exe使用(本机)DLLC.DLL 在C.dll中,我声明了一个静态文件,如下所示: static bool B = true; if(B == true ) { MyFile << "Switch true to false" << end

我正在Win7上使用C++/CLI、.net 4.5、VS2012进行编码

我有一个主进程a.exe,它使用System::Diagnostics::process(::Start())启动第二个进程B.exe

第二个进程B.exe使用(本机)DLLC.DLL

C.dll中,我声明了一个静态文件,如下所示:

static bool B = true;
if(B == true )
{
    MyFile << "Switch true to false" << endl;
    B=false;
}
MyFile << _getpid() << endl;
其他字段保留其默认值

有人能帮我吗

谢谢


更新1


最后,A.exe和B.exe都加载C.dll。但问题仍然存在:DLL中的静态变量不应该映射两次吗,每个可执行文件映射一次吗????当我调用编写PID的函数时,它来自B.exe,因为在这段时间,A.exe等待B.exe完成。

你确定看到了你认为看到的,你能用Process Explorer检查运行时的行为吗?另外,Process Explorer可以在两个进程中显示加载的模块,只是作为额外的健全性检查推荐。和你一样,我也不确定!因此,我在ProcessExplorer中进行了验证,并准确地看到了我所说的:A.exe是B.exe的父级,C.dll返回的PID是A.exe的PID!好的,请参阅问题中的更新1。所有进程是否都写入同一个文件?如果是这样的话,可能有些实例由于未处理的文件访问异常而提前终止。这也许可以解释这些奇怪的观察结果。
StartProcessInfo.UseShellExecute = false;
StartProcessInfo.CreateNoWindow = true;