【发布时间】:2017-11-03 06:21:34
【问题描述】:
我想通过使用终端来中断(我不想杀死它)一个进程。目前,我能够停止该过程的唯一方法是物理点击 Ctrl+C。但是,为了我正在构建的程序,我不想点击 Ctrl+C。有没有办法键入与在 Windows 命令行上按 Ctrl+C 执行相同操作的命令?我需要能够为我的程序执行此操作,我正在使用 paramiko 发送 cmd 命令,但我不能在 paramiko 中使用 ctrl+c。
即cmd ctrl-c interrupt_this_program
【问题讨论】:
-
提高键盘中断
-
@rosh 在 cmd 行中键入该内容不起作用,因为 raise 不是可识别的命令。我该怎么办?
-
要发送控制台控制事件,您首先必须通过
AttachConsole(target_pid)附加到与目标进程相同的控制台。这是从非控制台 (GUI) 应用程序中最容易做到的,因为您一次只能附加到一个控制台。然后致电GenerateConsoleCtrlEvent发送CTRL_C_EVENT。这针对一个进程组,例如 Unixkillpg,因此通过发送到组 0 将事件广播到所有附加进程是最简单的。当然这包括您自己的进程,因此请确保忽略进程中的 Ctrl+C 事件通过SetConsoleCtrlHandler(NULL, TRUE). -
最近有人遇到了类似的问题。也许the same method 适合你。
标签: python ssh cmd process paramiko