普通网友 2017-08-01 11:09
浏览 137
已采纳

如何在执行期间停止机器休眠/休眠

I have an app written in golang (partially), as part of its operation it will spawn an external process (written in c) and begin monitoring. This external process can take many hours to complete so I am looking for a way to prevent the machine from sleeping or hibernating whilst processing.

I would like to be able to then relinquish this lock so that when the process is finished the machine is allowed to sleep/hibernate

I am initially targeting windows, but a cross-platform solution would be ideal (does nix even hibernate?).

  • 写回答

2条回答 默认 最新

  • dongli8979 2017-08-02 13:19
    关注

    On Windows, your first step is to try SetThreadExecutionState:

    Enables an application to inform the system that it is in use, thereby preventing the system from entering sleep or turning off the display while the application is running

    This is not a perfect solution but I assume this is not an issue for you:

    The SetThreadExecutionState function cannot be used to prevent the user from putting the computer to sleep. Applications should respect that the user expects a certain behavior when they close the lid on their laptop or press the power button

    The Windows 8 connected standby feature is also something you might need to consider. Looking at the power related APIs we find this description of PowerRequestSystemRequired:

    The system continues to run instead of entering sleep after a period of user inactivity.

    This request type is not honored on systems capable of connected standby. Applications should use PowerRequestExecutionRequired requests instead.

    If you are dealing with tablets and other small devices then you can try to call PowerSetRequest with PowerRequestExecutionRequired to prevent this although the description of that is also not ideal:

    The calling process continues to run instead of being suspended or terminated by process lifetime management mechanisms. When and how long the process is allowed to run depends on the operating system and power policy settings.

    You might also want to use ShutdownBlockReasonCreate but I'm not sure if it blocks sleep/hibernate.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)