zoukankan      html  css  js  c++  java
  • 关于CreateProcess函数一些经验

    	TCHAR szCmdLine[]={TEXT("E:\CPL-server\其他工具\restartSrv\bin\opensavepath.exe")};
    	TCHAR static szCommandLine[MAX_PATH + 700] = {0};
    	lstrcpy(szCommandLine, pProgramPath);
    
    	STARTUPINFO si = {0};
    	ZeroMemory(&si, sizeof(si));
    	si.cb = sizeof(STARTUPINFO);
    	GetStartupInfo(&si);
    	si.wShowWindow = SW_SHOW;
    	si.dwFlags     = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    
    	// 运行进程
    	PROCESS_INFORMATION pi;
    	ZeroMemory(&pi, sizeof(pi));
    
    	BOOL bRet = FALSE;
    	bRet = CreateProcess(pProgramPath, NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi);
    
    	///<关闭Restartsrv不会关闭创建进程子窗口>
     	//BOOL bRet = CreateProcess(
     	//	NULL,					// name of executable module
     	//	szCmdLine,			// command line string
     	//	NULL,					// process attributes
     	//	NULL,					// thread attributes
     	//	FALSE,					// handle inheritance option
     	//	CREATE_NEW_CONSOLE,						// creation flags
     	//	NULL,					// new environment block
     	//	NULL,					// current directory name
     	//	&si,					// startup information
     	//	&pi);					// process information
     
     	if( bRet )
     	{
     		CloseHandle(pi.hThread);
     		CloseHandle(pi.hProcess);
     	}
    
    	//ShellExecute(NULL, "open", szCmdLine, NULL, NULL, SW_SHOWNORMAL);
    	
    	return bRet;
    

      

    都说通过createprocess函数创建的另一个进程(打开另一个程序),关闭父进程一般不会关闭子进程。

    但是最近测试发现如果使用一个控制台程序使用createprocess函数打开另一个控制台程序,而且dwCreationFlags参数不指定为CREATE_NEW_CONSOLE或者DETACHED_PROCESS值。那么关闭父进程也会关闭子进程。

    如果使用一个控制台程序使用createprocess函数打开的是一个窗口程序,关闭父进程确实不会关闭子进程。

    另外在控制台程序中使用 ShellExecute(NULL, "open", szCmdLine, NULL, NULL, SW_SHOWNORMAL);打开一个进程控制台程序或者窗口程序,关闭父进程对子进程都没有影响。

    所有,我猜测是因为使用控制台程序打开另一个控制台程序,不特别指定创建新控制台窗口或者脱离父进程,他们使用的是同一个控制台,没有创建新的控制台窗口,所有关闭这个控制台窗口相当于关闭了两个控制窗口。

  • 相关阅读:
    win2008R2、win7不停闪屏、程序失去响应的解决办法
    “我要上春晚”刷票器
    Windows Phone 7的About模板——Your Last About Dialog
    该伙伴事务管理器已经禁止了它对远程/网络事务的支持
    安装配置apache+php+mysql小结
    [摘]CSS的优先级探讨
    利用domdrag实现flash滚动条功能
    WIN7下如何做好IE6,7的兼容性测试
    同级情况下CSS的优先级探讨
    [NHibernate] NHibernate对象关系映射工具了解
  • 原文地址:https://www.cnblogs.com/lisuyun/p/5594933.html
Copyright © 2011-2022 走看看