diff --git a/qubesadmin/tools/qvm_run.py b/qubesadmin/tools/qvm_run.py index fdf99f0..1215778 100644 --- a/qubesadmin/tools/qvm_run.py +++ b/qubesadmin/tools/qvm_run.py @@ -21,12 +21,13 @@ ''' qvm-run tool''' import os +import subprocess import sys -import subprocess - import multiprocessing +import fcntl + import qubesadmin.tools import qubesadmin.exc @@ -111,8 +112,11 @@ parser.add_argument('cmd', metavar='COMMAND', def copy_stdin(stream): '''Copy stdin to *stream*''' - # multiprocessing.Process have sys.stdin connected to /dev/null - os.set_blocking(0, True) + # multiprocessing.Process have sys.stdin connected to /dev/null, use fd 0 + # directly + flags = fcntl.fcntl(0, fcntl.F_GETFL) + flags &= ~os.O_NONBLOCK + fcntl.fcntl(0, fcntl.F_SETFL, flags) for data in iter(lambda: os.read(0, 65536), b''): if data is None: break