outofprockiller.py (1193B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\osutils\outofprockiller.py 2 from __future__ import print_function 3 import os 4 import subprocess 5 import sys 6 import traceback 7 packagesdir = os.path.join(os.path.dirname(__file__), '..') 8 if packagesdir not in sys.path: 9 sys.path.append(packagesdir) 10 import devenv 11 import osutils 12 DEFAULT_SEC = 3 13 14 def watch_and_kill(svcpid): 15 startupinfo = subprocess.STARTUPINFO() 16 startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW 17 args = [devenv.PYTHON27EXE, 18 __file__, 19 str(os.getpid()), 20 str(svcpid)] 21 subprocess.Popen(args, startupinfo=startupinfo) 22 23 24 WatchAndKill = watch_and_kill 25 26 def Main(): 27 try: 28 watchpid = int(sys.argv[1]) 29 killpid = int(sys.argv[2]) 30 if len(sys.argv) == 4: 31 poll = float(sys.argv[3]) 32 else: 33 poll = DEFAULT_SEC 34 except Exception: 35 print('Usage: watchpid killpid <poll interval: %s sec>' % DEFAULT_SEC) 36 traceback.print_exc() 37 sys.exit(1) 38 39 def cb(): 40 osutils.kill(killpid) 41 42 t = osutils.watch_process(watchpid, cb, sleepS=poll) 43 t.join() 44 45 46 if __name__ == '__main__': 47 Main()