Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import subprocess
- import fcntl
- import sys
- import os
- import select
- def set_nonblock(f):
- flags = fcntl.fcntl(f, fcntl.F_GETFL)
- fcntl.fcntl(f, fcntl.F_SETFL, flags | os.O_NONBLOCK)
- def handle(f, name):
- data = f.read()
- sys.stderr.write("read %s: %s\n" % (name, repr(data)))
- if data == "":
- f.close()
- args = ['/usr/sbin/debootstrap', '--arch=i386', 'trusty', '/tmp/tmpBQAxhc', 'http://archive.ubuntu.com/ubuntu']
- stdin_arg = file('/dev/null', 'r')
- proc = subprocess.Popen(args, stdin=stdin_arg, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
- set_nonblock(proc.stdout)
- set_nonblock(proc.stderr)
- while True:
- fds = []
- if not proc.stdout.closed:
- fds.append(proc.stdout)
- if not proc.stderr.closed:
- fds.append(proc.stderr)
- if not fds:
- break
- ready = select.select(fds, [], [])[0]
- if proc.stdout in ready:
- handle(proc.stdout, "stdout")
- if proc.stderr in ready:
- handle(proc.stderr, "stderr")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement