CraftLaunch APIリファレンス

clnch_subprocess.py

00001 import sys
00002 import time
00003 import subprocess
00004 import clnch_misc
00005 
00006 #-------------------------------------------------------------------------
00007 
00008 class SubProcess:
00009 
00010     def __init__( self, cmd, cwd=None, env=None, stdout_writer=None ):
00011     
00012         if stdout_writer==None:
00013             stdout_writer = sys.stdout.write
00014     
00015         self.cmd = cmd
00016         self.cwd = cwd
00017         self.env = env
00018         self.stdout_writer = stdout_writer
00019         self.p = None
00020 
00021     def __call__(self):
00022 
00023         class StartupInfo:
00024             pass
00025         
00026         STARTF_USESHOWWINDOW = 1
00027         SW_HIDE = 0
00028 
00029         startupinfo = StartupInfo()
00030         startupinfo.dwFlags = STARTF_USESHOWWINDOW
00031         startupinfo.wShowWindow = SW_HIDE
00032         
00033         self.p = subprocess.Popen( self.cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False, cwd=self.cwd, env=self.env, startupinfo=startupinfo )
00034 
00035         while 1:
00036             self.stdout_writer( self.p.stdout.read() )
00037             if self.p.poll() != None : break
00038             time.sleep(0.1)
00039 
00040         return self.p.returncode
00041 
00042     def cancel(self):
00043         clnch_misc.terminateProcess(self.p.pid)
00044 
00045 #-------------------------------------------------------------------------

Copyright © 2009 craftware. All rights reserved.