15,473
社区成员




......
TCHAR szCommandLine[] = TEXT("thread"); // thread程序是执行无限循环计算
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
HANDLE hJob = CreateJobObject(NULL, NULL);
JOBOBJECT_BASIC_LIMIT_INFORMATION jobli = { 0 };
jobli.PerProcessUserTimeLimit.QuadPart = 1000; // 限制时间定为1ms
jobli.LimitFlags = JOB_OBJECT_LIMIT_PROCESS_TIME;
SetInformationJobObject(hJob, JobObjectBasicLimitInformation, &jobli, sizeof(jobli));
BOOL bSuccess = CreateProcess( NULL,
szCommandLine,
NULL,
NULL,
FALSE,
CREATE_SUSPENDED,
NULL,
NULL,
&si,
&pi);
if(bSuccess)
{
AssignProcessToJobObject(hJob, pi.hProcess);
ResumeThread(pi.hThread);
CloseHandle(pi.hThread);
HANDLE h[2];
h[0] = pi.hProcess;
h[1] = hJob;
WaitForMultipleObjects(2, h, FALSE, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(hJob);
}
......