timeout a process

Tim Golden tjgolden at gmail.com
Sun Jan 15 12:58:47 CET 2006

iapain wrote:
> Hello,
> I am trying to build and infinite loop handler in python 2.4 on windows
> platform. The problem is that i want to create a process and forcely
> kill/timeout after 2 sec to handle infinite loop in a gcc complied exe
> on cygwin. something like below
> os.system("mycpp.exe") # this exe is compiled with g++ and having an
> infinite loop
> I wish to terminate this after 2 sec. I've tried Watchdog and deamon
> thread.. but nothing seem to work here.

I'm not 100% sure, but I think that the following approach will work:

Use the win32process and win32event modules from the pywin32
Use CreateProcess to run your .exe
Use WaitForSingleObject with the process handle and a timeout
Use TerminateProcess to kill your exe

Something like this (tested only casually):

import win32process
import win32event


# Do as little as possible to get a
# process up and running.
hProcess, hThread, pid, tid = \
  win32process.CreateProcess (
    None, None, 0, 0, None, None,
    win32process.STARTUPINFO ()
# Wait for it to finish, but give up after n secs
result = win32event.WaitForSingleObject (
# If it's timed out, kill it
if result == win32event.WAIT_TIMEOUT:
  win32process.TerminateProcess (hProcess, -1)
  print "Killed off"
  print "Died naturally"



More information about the Python-list mailing list