【问题标题】:How can I prevent system from suspending/locking (Python/C/Bash) [closed]如何防止系统挂起/锁定(Python/C/Bash)[关闭]
【发布时间】:2013-02-13 12:57:26
【问题描述】:

如何防止系统(在我的应用程序打开时)挂起? (Linux - Ubuntu 10.04)如果仅通过 python 无法实现,可能是一些 Bash、C 命令/库?

【问题讨论】:

    标签: python c linux ubuntu


    【解决方案1】:

    在python中

    import dbus
    _session_bus = dbus.SessionBus()
    
    _dbus_screensaver = _session_bus.get_object('org.freedesktop.ScreenSaver','/ScreenSaver')
    
    simulate_activity = _dbus_screensaver.get_dbus_method('SimulateUserActivity','org.freedesktop.ScreenSaver')
    
    simulate_activity()
    

    在 bash 中:

    qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.SimulateUserActivity
    

    【讨论】:

    • & 在无限循环中执行此操作,但有一些延迟。 :)
    • +1,因为我不知道有专门的方法可以做到这一点。我打算建议使用xte 模拟击键/鼠标移动
    • 哇 - 超级好,我已经找到了 dbus(通过之前的回答)以及它的功能,但我不知道如何在这么短的时间内正确使用它 - 谢谢: )
    • 你能更新你的答案吗?我尝试在 Ubuntu 13.04 和 DIDN'T WORKED 上使用此代码。
    • 使用 qdbus 看看这个功能是否还在。如果是报告错误,如果不是...帮不上忙。
    【解决方案2】:

    如果你想用 C 语言做,从这里开始:https://wiki.ubuntu.com/GnomePowerManagerInactiveSleep

    【讨论】:

      【解决方案3】:

      您可以将脚本添加到/etc/pm/sleep.d/,当您的应用程序运行时返回错误

      #! /bin/sh
      
      ps -e -o comm | grep -q application
      if test $? -eq 0; then
          exit 1
      fi
      

      当在进程列表中找到您的application 并且脚本退出并出现错误 (1) 时,暂停将中止。否则返回0 并继续挂起。

      当然,您可以为您的应用程序使用任何其他测试。

      【讨论】:

        猜你喜欢
        • 2019-11-11
        • 1970-01-01
        • 1970-01-01
        • 2018-04-21
        • 2011-02-19
        • 2018-06-04
        • 2020-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多