读书人

进程传递进程句柄的有关问题 求指点

发布时间: 2012-02-25 10:01:49 作者: rapoo

进程传递进程句柄的问题 求指点
我想实现A进程启动B进程,B进程等到A进程完全退出再执行代码
想法是:A进程启动B进程时,把自己的进程句柄通过命令行传递给B,BWait这个句柄 但是不成功啊,有什么问题啊? 求指点

A进程:

C/C++ code
STARTUPINFO si={sizeof(si)};    PROCESS_INFORMATION pi;    ZeroMemory(&pi,sizeof(pi));    SECURITY_ATTRIBUTES sa;      sa.nLength=sizeof(sa);      sa.lpSecurityDescriptor=NULL;      sa.bInheritHandle=true;     TCHAR szBuf[]=_T("TestCall.exe");    HANDLE hdProcessT=OpenProcess(PROCESS_ALL_ACCESS,NULL,GetCurrentProcessId());      TCHAR szHandle[100]={0};    _stprintf(szHandle,_T("%d"),(int)hdProcessT);    CloseHandle(hdProcessT);    bool ret=CreateProcess(szBuf,szHandle,&sa,NULL,true,NULL,NULL,NULL,&si,&pi);    CloseHandle(pi.hProcess);    CloseHandle(pi.hThread);    system("pause");


B进程:
C/C++ code
LPSTR p=GetCommandLine();    HANDLE hd=(HANDLE)(atoi(p));    WaitForSingleObject(hd,INFINITE);    cout<<"OVER"<<endl;


[解决办法]
探讨

引用:
HANDLE hdProcessT=OpenProcess(PROCESS_ALL_ACCESS,TRUE,GetCurrentProcessId());

改正一下


非常感谢啊,运行成功了,但有个疑问啊,OpenProcess会使用句柄计数+1,句柄继承也会使句柄+1,在B程序我只会CloseHandle()一次句柄,这会不会造成……

读书人网 >C++

热点推荐