【问题标题】:how to send a "Ctrl+Break" to a subprocess via pid or handler如何通过 pid 或处理程序向子进程发送“Ctrl+Break”
【发布时间】:2011-11-03 10:22:57
【问题描述】:
import subprocess

proc = subprocess.Popen(['c:\windows\system32\ping.exe','127.0.0.1', '-t'],stdout=subprocess.PIPE) 
while True: 
  line = proc.stdout.readline() 
  print "ping result:", line.rstrip() 
  #sendkey("Ctrl+Break", proc)            # i need this here, this is not for terminate the process but to print a statistics result for the ping result.

如果有人知道怎么做,请与我分享,谢谢!

【问题讨论】:

  • 向进程发送信号,而不是密钥。
  • creationflags=subprocess.CREATE_NEW_PROCESS_GROUP 应在调用子流程时添加。

标签: python controls sendkeys


【解决方案1】:

窗户?试试这个:

import signal
proc.send_signal(signal.SIGBREAK)

如果您的意思是信号中断 (kill -2)

import signal
proc.send_signal(signal.SIGINT)

【讨论】:

  • 太好了,我没有注意到 Popen 对象上的 send_signal ;)
  • 谢谢,我还发现 os.kill(proc.pid, signal.CTRL_BREAK_EVENT) 在 windows 中也能正常工作
【解决方案2】:

Ctrl+Break 键是一个 SIGBREAK 信号。

在linux下,你可以用kill命令发送这个信号,在windows下,这个略有不同。您可以使用SendSignal 工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2017-06-18
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多