NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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()