1、调用QueryInformationJobObject方法,不但可以得到关于Job对象的信息,还可以得到关于Job对象的统计信息
~ JobObjectBasicAccountingInformation
统计基本信息
~ JobObjectBasicAndIoAccountingInformation
基本统计信息和IO统计信息
~JobObjectBasicLimitInformation
~ JobObjectBasicProcessIdList
获取作业进程ID的列表
~ JobObjectBasicUIRestrictions
~JobObjectExtendedLimitInformation
~ JobObjectSecurityLimitInformation
2、作业进程的终止
终止作业对象中的全部进程时,可以调用
TerminateJobObject
该方法内部没有什么特别的行为,可以理解为它为每一个作业进程调用了以此
TerminateProcess
这将引起与TerminateProcess方法直接终止进程时相同的问题
(如:DLL的入口函数没有被正确被调用等)
因此不到万不得已不要调用TerminateJobObject,而使用其他更优雅的方法来终止进程
实际中放入作业对象中的进程往往也是自行开发的进程,完全有方法做到另外的退出机制
(如:所有进程等待同一个命名Event对象等)