提供子流程modu的输入

2024-05-16 21:14:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用“gnome screensaver command”锁定ubuntu服务器的屏幕,然后按回车键解锁。当我手动执行时,它工作得很好,因此考虑使用Python子流程模块将其自动化

我面临的问题是,它锁定了屏幕,并且在计时器过期后,回车键(“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")

按照我的要求应该怎么做


Tags: importechocmdbin屏幕timeusrsleep
1条回答
网友
1楼 · 发布于 2024-05-16 21:14:11

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

将键盘事件发送到桌面(也许)是可行的。有一些程序(比如Windows上的caffeine)这样做是为了防止屏幕保护程序被激活,但是让我提出一个不涉及键盘事件的可移植的替代方案:

  • 运行进程
  • 等待10秒钟
  • 终止屏幕保护程序进程

像这样:

import subprocess
import time


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

相关问题 更多 >