+#! /usr/bin/env python
+
"""Run a subprocess and communicate with it via stdin, stdout, and stderr.
Requires that platform supports, eg, posix-style 'os.pipe' and 'os.fork'
except os.error as error:
errno, msg = error
if errno == 10:
+ self.pid = None
raise SubprocessError("Subprocess '%s' failed." % self.cmd)
+ self.pid = None
raise SubprocessError("Subprocess failed[%d]: %s" % (errno, msg))
if pid == self.pid:
# child exited already
"child killed by signal %d with a return code of %d"
% (sig, rc))
if rc:
+ self.pid = None
raise SubprocessError(
"child exited with return code %d" % rc)
# Child may have exited, but not in error, so we won't say
(sig[0], self.pid, self.cmd,
hex(id(self))[2:])))
for i in self.pipefiles:
- os.close(i)
+ try:
+ fp = os.fdopen(i).close()
+ except OSError:
+ pass
+ del self.pipefiles[:]
self.pid = 0
return None # ===>
time.sleep(.1)
del p
print("\tDone.")
return None
+
+if __name__ == '__main__':
+ test()