Hello, I'm running a Java process from my python script using the subprocess module. But there seems to be some problem with the return code to subprocess and the Java program is just hanging waiting for something. If I run the Java program from shell it terminates normally and if run the same program through a shell script it does the same thing. Is there something different I need to handle when running a Java program vs other programs? Here's my code:
def proc(cmd_in): cmd = cmd_in if isinstance(cmd, types.StringTypes): cmd = cmd.split(' ') print cmd os.chdir("/home/qauser/jerome") outFile = os.path.join(os.curdir, "output.log") outptr = file(outFile, "w") errFile = os.path.join(os.curdir, "error.log") errptr = file(errFile, "w") retval = subprocess.call(cmd, 0, None, None, outptr, None) errptr.close() outptr.close() if retval != 0: errptr = file(errFile, "r") errData = errptr.read() errptr.close() raise Exception("Error executing command: " + repr(errData)) def setClass(): print "=== Setting Classpath ===" src = "/home/qauser/automation/setClass.sh" dst = "/home/qauser/jerome/setClass.sh" os.chdir("/home/qauser/jerome") shutil.copyfile(src, dst) os.chmod(dst, 0777) proc("/home/qauser/jerome/setClass.sh") classFile = open("/home/qauser/jerome/output.log", "r") CP = classFile.read() CP = CP.rstrip('\n') print "=== Complete Classpath Setup ===" return CP def run_junit(classpath): file_in = open("/home/qauser/automation/testdata/junit_master_file", "r") match = re.compile('#+') work_list = [] for line in file_in: work = line work = work.rstrip('\n') if match.search(work): found = False else: found = True if found == True: work_list = work.split(',') arg1 = work_list[0] arg2 = work_list[1] arg3 = work_list[2] arg4 = work_list[3] os.chdir("/home/qauser/jerome") cmd = "java -cp %s com.redsealsys.srm.server.analysis.NetmapTest %s %s %s %s" cmdstr = cmd % (classpath,arg1,arg2,arg3,arg4) print "=== Starting JUnit Run ===" proc(cmdstr) print "=== JUnit Run Complete ===" #################### ###### Main ###### #################### cp = setClass() run_junit(cp) The junit_master_file is just a comma separted file: netmap_func,/home/qauser/junit/static_nat/simple_nat,10.1.1.0,172.16.200.0 which has the prameters that I need to pass into the Java program. I would appreciate any insight or help in this matter. Much Thanks, Jerome __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor