指定された実行時間に達した後、アプリケーションをシャットダウンしようとすると問題が発生します。ジョブを作成し、制限情報を設定し、現在のプロセスを割り当てましたが、何も起こりません。私のコード:
SECURITY_ATTRIBUTES sa;
myJob = CreateJobObject(&sa, TEXT("oko"));
LARGE_INTEGER lint;
lint.LowPart = 1;
JOBOBJECT_BASIC_LIMIT_INFORMATION jbli;
jbli.PerProcessUserTimeLimit = lint;
jbli.LimitFlags = JOB_OBJECT_LIMIT_PROCESS_TIME;
SetInformationJobObject(myJob, JobObjectBasicLimitInformation, &jbli, sizeof(jbli));
AssignProcessToJobObject(myJob, GetCurrentProcess());
100 ナノ秒後にアプリケーションがシャットダウンするのではないかと思ったのですが、何も起こりません。ここで何が問題なのですか?
winapi のドキュメントを何時間も「楽しんだ」後、私はこのアプローチをあきらめ、フラグを使用して別のプロセス (実際には私の問題にはさらに便利です) を作成しました。
NORMAL_PRIORITY_CLASS | CREATE_BREAKAWAY_FROM_JOB
そのようなプロセスをジョブに割り当てることができます。ジョブを正常に作成するために、Roger Rowland のアドバイスに従い、SECURITY_ATTRIBUTES 構造のパラメーターを明示的に設定しました。デフォルトのセキュリティ属性 (CreateJobObject の NULL) も同様に機能します。