|
|
|
@ -1478,67 +1478,5 @@ class Popen(object):
|
|
|
|
|
"""
|
|
|
|
|
self.send_signal(signal.SIGKILL)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _demo_posix():
|
|
|
|
|
#
|
|
|
|
|
# Example 1: Simple redirection: Get process list
|
|
|
|
|
#
|
|
|
|
|
plist = Popen(["ps"], stdout=PIPE).communicate()[0]
|
|
|
|
|
print "Process list:"
|
|
|
|
|
print plist
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Example 2: Change uid before executing child
|
|
|
|
|
#
|
|
|
|
|
if os.getuid() == 0:
|
|
|
|
|
p = Popen(["id"], preexec_fn=lambda: os.setuid(100))
|
|
|
|
|
p.wait()
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Example 3: Connecting several subprocesses
|
|
|
|
|
#
|
|
|
|
|
print "Looking for 'hda'..."
|
|
|
|
|
p1 = Popen(["dmesg"], stdout=PIPE)
|
|
|
|
|
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
|
|
|
|
|
print repr(p2.communicate()[0])
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Example 4: Catch execution error
|
|
|
|
|
#
|
|
|
|
|
print
|
|
|
|
|
print "Trying a weird file..."
|
|
|
|
|
try:
|
|
|
|
|
print Popen(["/this/path/does/not/exist"]).communicate()
|
|
|
|
|
except OSError as e:
|
|
|
|
|
if e.errno == errno.ENOENT:
|
|
|
|
|
print "The file didn't exist. I thought so..."
|
|
|
|
|
print "Child traceback:"
|
|
|
|
|
print e.child_traceback
|
|
|
|
|
else:
|
|
|
|
|
print "Error", e.errno
|
|
|
|
|
else:
|
|
|
|
|
print >>sys.stderr, "Gosh. No error."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _demo_windows():
|
|
|
|
|
#
|
|
|
|
|
# Example 1: Connecting several subprocesses
|
|
|
|
|
#
|
|
|
|
|
print "Looking for 'PROMPT' in set output..."
|
|
|
|
|
p1 = Popen("set", stdout=PIPE, shell=True)
|
|
|
|
|
p2 = Popen('find "PROMPT"', stdin=p1.stdout, stdout=PIPE)
|
|
|
|
|
print repr(p2.communicate()[0])
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Example 2: Simple execution of program
|
|
|
|
|
#
|
|
|
|
|
print "Executing calc..."
|
|
|
|
|
p = Popen("calc")
|
|
|
|
|
p.wait()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
if mswindows:
|
|
|
|
|
_demo_windows()
|
|
|
|
|
else:
|
|
|
|
|
_demo_posix()
|
|
|
|
|
pass
|
|
|
|
|