尝试一个简单作业沙框失败

蒙飞鸿 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);
}
关闭对话框,计算器未退出,怎么回事?
...全文
92 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
幸福官 2010-01-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mengfeihong 的回复:]
不满意结贴,是不是分全贴主拿呢。。。论坛制度其实还不太懂,呵呵
[/Quote]
不是自己拿了,而是白扔了。
蒙飞鸿 2010-01-01
  • 打赏
  • 举报
回复
不满意结贴,是不是分全贴主拿呢。。。论坛制度其实还不太懂,呵呵
MoXiaoRab 2010-01-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mengfeihong 的回复:]
哦,原来是还要设置一个标志,才能启动进程数量的限制。。。分我自己拿了。。。
[/Quote]
啥叫“自己拿”?
蒙飞鸿 2010-01-01
  • 打赏
  • 举报
回复
哦,原来是还要设置一个标志,才能启动进程数量的限制。。。分我自己拿了。。。
MoXiaoRab 2010-01-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mengfeihong 的回复:]
哦,能退出计算器了,原来是在初始化函数里m_hjob被重新定义了。。。但限制打开进程为5的设置仍未成功。
[/Quote]
作业中的进程对象能创建五个以上的子进程?
蒙飞鸿 2010-01-01
  • 打赏
  • 举报
回复
哦,能退出计算器了,原来是在初始化函数里m_hjob被重新定义了。。。但限制打开进程为5的设置仍未成功。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧