【问题标题】:How to send a stop command from python to terminal如何从python发送停止命令到终端
【发布时间】:2018-12-06 04:21:15
【问题描述】:

Python 发送:

os.system("sudo openvpn openvpn.ovpn")

到终端

我如何告诉终端听我的下一个命令 我正在尝试发送

sys.exit()

但它不起作用

这个程序用tkinter编码,有一个按钮可以选择vpn, 但我也想做一个停止按钮。

【问题讨论】:

  • 我猜你想接下来输入你的 sudo 密码?
  • 是的,所以在我输入 sudo 密码后,程序将初始化连接,但是在连接时我无法单击我的 gui 上的任何内容,所以我认为 python 应该有一种方法来监听另一个命令当终端仍在运行时
  • 使用subprocess 模块
  • 谢谢!还有一个问题,如果我使用 sys.exit() 程序将终止,但我只希望终端停止如何发送停止命令?现在我正在使用 subprocess.Popen 向终端发送命令

标签: python python-3.x terminal


【解决方案1】:

sys.exit 会导致当前进程退出。您可以尝试 POpen 然后使用其中之一

Popen.send_signal()
Popen.kill()
Popen.terminate()

导致子进程退出。例如:

subp = subprocess.Popen("some command" )
subp.send_signal( 9 );

【讨论】:

  • 如果现在我在一个 def 函数中有 Popen 我如何将该值传递给另一个函数,Popen.kill() 需要 self.这些在 2 个单击按钮下;一个是启动连接,另一个是终止连接
  • def clicked(): process = subprocess.Popen(['sudo','openvpn','--config',var.get()]) def clicked2(): process.kill( ) 过程在另一个定义的函数中,所以我无法回忆它,无论如何我可以在另一个函数中回忆它?
  • 你想在这条评论中做什么?
【解决方案2】:
def clicked():
    process = subprocess.Popen(['sudo','openvpn','--config',var.get()])

def clicked2():
    process.kill()

进程在另一个定义的函数中,所以我无法回忆它,无论如何我可以在另一个函数中回忆它吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 2021-09-22
    • 1970-01-01
    • 2017-06-17
    • 2019-02-25
    相关资源
    最近更新 更多