尝试一个简单作业沙框失败
蒙飞鸿 2010-01-01 03:44:51 默认生成一个MFC对话框程序,在对话框初始化里加了
HANDLE m_hjob = CreateJobObject(NULL, TEXT("myjob"));
JOBOBJECT_BASIC_LIMIT_INFORMATION jobli = { 0 };
jobli.ActiveProcessLimit = 5;
SetInformationJobObject(m_hjob,JobObjectBasicLimitInformation,&jobli,sizeof(jobli));
这几句,m_hjob是成员变量。
然后用按钮执行:
void CcreatePDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
STARTUPINFO si;
memset(&si,0,sizeof(STARTUPINFO));
PROCESS_INFORMATION pi;
CreateProcess("c:\\windows\\system32\\calc.exe",NULL,NULL,NULL,NULL,CREATE_SUSPENDED,NULL,NULL,&si,&pi);
AssignProcessToJobObject(m_hjob,pi.hProcess);
ResumeThread(pi.hThread);
}
运行后点按钮能启动计算器程序。
对话框析构函数CcreatePDlg::~CcreatePDlg(void)
{
TerminateJobObject(m_hjob,9);
}
关闭对话框,计算器未退出,怎么回事?