使用子流程模块

时间:2017-06-15 11:26:47

标签: python ubuntu-14.04

我正在尝试使用" gnome-screensaver-command" 锁定ubuntu服务器中的屏幕,然后按回车键解锁。当我手动完成时,这工作正常,因此想到使用Python Subprocess模块​​自动化它。

我面临的问题是锁定屏幕并在计时器到期后输入密钥(" echo -ne \ n",知道这可以使用通过CLI发送回车)没有发生

以下是代码段。

import subprocess
import time


cmd = subprocess.call(["/usr/bin/gnome-screensaver-command", "-l"])
time.sleep(10)
subprocess.call(["echo", "-ne", "\n"])

尝试了另一种方式:

#******THIS METHOD IS NOT LOCKING THE SCREEN AT ALL*******

cmd = subprocess.Popen(["/usr/bin/gnome-screensaver-command", "-l"], stdin = subprocess.PIPE, shell=True)
time.sleep(10)
cmd.communicate(input="\n")

按照我的要求应该做些什么呢?

1 个答案:

答案 0 :(得分:0)

问题是屏幕保护程序读取键盘但不通过过程标准输入。

(可能)工作的东西是将键盘事件发送到桌面。有一些程序(如Windows上的caffeine)这样做是为了防止屏幕保护程序激活,但让我提出一个不涉及键盘事件的便携式替代方案:

  • 运行流程
  • 等待10秒
  • 杀死屏幕保护程序
像这样:

import subprocess
import time


cmd = subprocess.Popen(["/usr/bin/gnome-screensaver-command", "-l"])
time.sleep(10)
cmd.terminate()