我有一个用于chrome扩展的本机消息传递主机,它可以读取OS中的密钥链(使用Apple's keychain service)。当browser action page打开时,我调用chrome.runtime.sendNativeMessage。当密钥链已经解锁时,本机程序运行良好,并在标准输出时返回响应。当钥匙链被锁定时,问题就会发生,因此OS X会提示用户通过UI警报(类似于this)来解锁钥匙链。问题是本机程序在被调用时挂起,并且提示符不会立即出现。该提示只会在我关闭浏览器操作弹出窗口时出现,并且只会短暂出现(不到一秒)。我知道本机应用程序在等待UI提示符时正在运行,因为我添加了它何时启动和退出的日志(我还检查了ps)。
有人知道本机应用程序可能挂起的原因吗?我认为可能是UI窗口导致了阻塞,所以我尝试在本机应用程序中派生一个新线程来打开密钥链。不幸的是,这也不起作用。
当我直接从命令行运行该程序时,我没有遇到任何这些问题,并且立即出现解锁密钥链的提示。
Ps。我也尝试过chrome.runtime.connectNative,但也不起作用。
发布于 2014-09-09 03:47:48
事实证明,我用来从标准中读取的函数正在等待EOF,所以在某些情况下,本机应用程序被无限期地挂起。
https://stackoverflow.com/questions/25716119
复制相似问题