複数のプロセスを同時に強制終了(C言語)
説明:
メモ帳を複数個同時に起動し、それらを同一のジョブオブジェクトに関連付ける。起動後10秒が経過したら、TerminateJobObjectを使用することにより、三つのメモ帳を同時に終了する。(このような処理を行いたいときは、SetInformationJobObjectでJobObjectBasicLimitInformationを設定することによっても可能)
キーワード:
CreateJobObject, AssignProcessToJobObject, TerminateJobObject
サンプルコード:
void ExitAllNotePad()
{
HANDLE hJob;
HANDLE hProcess[3];
int i;
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(si);
si.lpReserved = NULL;
si.lpDesktop = NULL;
si.lpTitle = NULL;
si.dwFlags = 0;
si.cbReserved2 = 0;
si.lpReserved2 = NULL;
/* ジョブオブジェクトの作成 */
hJob = CreateJobObject(NULL, "Test Job Object");
/* メモ帳を三つ起動 */
for(i=0; i<3; i++) {
CreateProcess(NOTEPAD_PATH, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
hProcess[i] = pi.hProcess;
}
/* 起動したメモ帳をジョブオブジェクトに関連付ける */
for(i=0; i<3; i++) AssignProcessToJobObject(hJob, hProcess[i]);
/* 十秒間待機 */
printf("10秒待機...");
Sleep(10000);
/* 三つのメモ帳をすべて終了 */
TerminateJobObject(hJob, -1);
/* ジョブオブジェクトの破棄 */
CloseHandle(hJob);
}
(original text:1999/01/28 更新)
本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。