2

起動時に Mac ディスプレイにアクセスできるようにするためにデーモン プロセスが必要なプロジェクトがあります。デーモンが最初に起動したときに、すべての MacOs CGDisplay... アクセス ルーチンが失敗することを発見しました。私がしばらく寝れば、彼らはうまくいきます。

私はこのようなことを試すことができると思いました:

while (!CGDisplayIsActive(CGMainDisplayID())) {

    if ( ++errCnt == 20 ) {
        trace(0,"CGDisplayIsActive never went true\n");
        return -1;
    }
    trace(0,"display not active on count errCnt %d\n", errCnt);
    sleep(5);
};

しかし、一度 CGDisplayIsActive ルーチンが失敗すると、成功を返すことはないようです。

これはうまくいきますが、確かにもっと良い方法があります:

   if (!CGDisplayIsActive(CGMainDisplayID())) {
    trace(0,"CGDisplayIsActive not true, wait a bit and then let launchd start again\n");
    sleep(5); 
    exit(0);
   }

表示サービスがアクティブになるのを待つ方法はありますか?

TFYS

4

0 に答える 0