Python: parando script com CTRL-C no Windows

Ao rodar um script python no Windows é preciso os recursos do módulo win32api para conseguir parar a execução digitando CTRL-C.  O pywin32, que provê o módulo win32api para o Python, pode ser obtido no sourceforge.net pelo link: http://sourceforge.net/projects/pywin32/files/

No Linux, quem faz isso é o os.kill(pid) e funciona de maneira nativa.

Segue um exemplo de código:

Código Python:

import win32api
import os
import time

# Obtem o numero do processo PID
process = os.getpid()
# mostra ele na tela (so pra saber)
print "Processo rodando sob PID %d" % process

# Chama um handle para o script
handle = win32api.OpenProcess(1, False, process)

# Aqui vai o resto das funcoes do script
# como exemplo um loop infinito que fica
# imprimindo Linux RLZ na tela

def LoopPrint():
  while 1:
    print “Linux RLZ – CTRL-C para sair.”
    time.sleep(.5)

if __name__==’__main__’:
  try:
    LoopPrint()
  except KeyboardInterrupt:
    win32api.TerminateProcess(handle, -1)
    win32api.CloseHandle(handle)

Referência:
http://www.python.org/doc/faq/windows/#id10

Deixe um comentário