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