title: Cross-platform way to terminate a process in python
body: <p>When I try to kill a process in windows with the subprocess.Popen.terminate() or kill() commands, I get an access denied error.  I really need a cross-platform way to terminate the process if the file no longer exists (Yes, I know it's not the most elegant way of doing what I'm doing), I don't want to have to use platform calls or import win32api if at all possible.</p>
  
  <p>Also - Once I kill the task, I should be able to just delete the iteration of that portion of the library, no? (I remember reading something about having to use slice if I plan on working on something and modifying it while working on it?)</p>
  
  <pre><code>#/usr/bin/env python
  #import sys
  import time
  import os
  import subprocess
  import platform
  
  ServerRange = range(7878, 7890)  #Range of ports you want your server to use.
  cmd = 'VoiceChatterServer.exe'
  
  #********DO NOT EDIT BELOW THIS LINE*******
  
  def Start_IfConfExist(i):
      if os.path.exists(str(i) + ".conf"):
          Process[i] = subprocess.Popen(" " + cmd + " --config " + str(i) + ".conf", shell=True)
  
  Process = {}
  
  for i in ServerRange:
      Start_IfConfExist(i)
  
  while True:
      for i in ServerRange:
          if os.path.exists(str(i) + ".conf"):
              res = Process[i].poll()
          if not os.path.exists(str(i) + ".conf"):  #This is the problem area
              res = Process[i].terminate()          #This is the problem area.
          if res is not None:
              Start_IfConfExist(i)
              print "\nRestarting: " + str(i) + "\n"
      time.sleep(1)
  </code></pre>