#! /usr/bin/python import socket import subprocess import errno import sys import os port = 7890 s = socket.socket() s.bind(("localhost", port)) args = [os.getcwd() + "/GraphicExport.exe"] # args = [os.getcwd() + "/GraphicExport.app/GraphicExport.exe", str(port)] g = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) s.settimeout(0.5) s.listen(0) conn = None while conn is None and g.returncode is None: try: (conn, _) = s.accept() except socket.timeout, e: pass except e: print e s.close() g.wait() sys.exit(1) g.poll() if conn: conn.setblocking(False) conn.send("EXPORT|" + "|".join(sys.argv[1:]) + "\n") while g.returncode is None: try: d = conn.recv(4096) if len(d): sys.stdout.write(d) sys.stdout.flush() except socket.error, e: if e.args[0] == errno.EWOULDBLOCK or e.args[0] == errno.EAGAIN: pass else: print e conn.close() s.close() g.wait() sys.exit(1) g.poll() if (conn): conn.close() s.close()