获取子进程的退出码

#include "stdafx.h"
#include "windows.h"
#include "iostream"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	LPCTSTR lpName(_T("zzc"));  
	LPCTSTR lpValue(_T("88888"));  

	//设置环境变量的值
	::SetEnvironmentVariable(lpName,lpValue);  

	STARTUPINFO si;  
	PROCESS_INFORMATION pi;  

	ZeroMemory(&si, sizeof(si));  
	ZeroMemory(&pi, sizeof(pi));

	if( !CreateProcess( _T("D:\\绘图编程\\父子进程通信-环境变量\\Child\\Debug\\Child.exe"),  
		NULL,  
		NULL,   
		NULL, 
		TRUE,
		CREATE_NEW_CONSOLE/*DETACHED_PROCESS*/,//新进程使用自己的可控制台窗口  
		NULL,  
		NULL,   
		&si,  
		&pi) )  
	{  
		cout <<"shibai" <<endl;
	}  

	else{
		cout << "chenggong" << endl;
	}

	//关闭子进程的主线程句柄,因为不在使用了

	CloseHandle(pi.hThread);

	//子进程终止时,子进程句柄会变为已触发状态
	WaitForSingleObject(pi.hProcess,INFINITE);

	//获取子进程的退出码
	DWORD dwExitCode;
	GetExitCodeProcess(pi.hProcess,&dwExitCode);
	cout << "子进程的退出码:" << dwExitCode << endl;

	//关闭子进程句柄
	CloseHandle(pi.hProcess);

	system("pause");

	return 0;
}



#include "stdafx.h"
#include "windows.h"
#include "iostream"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	LPCTSTR lpName(_T("zzc"));   
	int nlength = ::GetEnvironmentVariable(lpName,NULL,0);  
	LPTSTR lpValue = new TCHAR[nlength+1];  
	memset(lpValue,'\0',nlength+1);  
	::GetEnvironmentVariable(lpName,lpValue,nlength+1);

	setlocale(LC_ALL, "chs");
	_tprintf(lpValue);

	cout <<lpValue<<endl;

	system("pause");

	return 10;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小米的修行之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值