summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ansible/executor/process/worker.py34
-rw-r--r--lib/ansible/plugins/action/pause.py5
2 files changed, 22 insertions, 17 deletions
diff --git a/lib/ansible/executor/process/worker.py b/lib/ansible/executor/process/worker.py
index 0647c59b41..04f0c9c035 100644
--- a/lib/ansible/executor/process/worker.py
+++ b/lib/ansible/executor/process/worker.py
@@ -68,21 +68,25 @@ class WorkerProcess(multiprocessing.Process):
self._variable_manager = variable_manager
self._shared_loader_obj = shared_loader_obj
- # dupe stdin, if we have one
- self._new_stdin = sys.stdin
- try:
- fileno = sys.stdin.fileno()
- if fileno is not None:
- try:
- self._new_stdin = os.fdopen(os.dup(fileno))
- except OSError:
- # couldn't dupe stdin, most likely because it's
- # not a valid file descriptor, so we just rely on
- # using the one that was passed in
- pass
- except (AttributeError, ValueError):
- # couldn't get stdin's fileno, so we just carry on
- pass
+ if sys.stdin.isatty():
+ # dupe stdin, if we have one
+ self._new_stdin = sys.stdin
+ try:
+ fileno = sys.stdin.fileno()
+ if fileno is not None:
+ try:
+ self._new_stdin = os.fdopen(os.dup(fileno))
+ except OSError:
+ # couldn't dupe stdin, most likely because it's
+ # not a valid file descriptor, so we just rely on
+ # using the one that was passed in
+ pass
+ except (AttributeError, ValueError):
+ # couldn't get stdin's fileno, so we just carry on
+ pass
+ else:
+ # set to /dev/null
+ self._new_stdin = os.devnull
def run(self):
'''
diff --git a/lib/ansible/plugins/action/pause.py b/lib/ansible/plugins/action/pause.py
index 2391951215..5a70e550b1 100644
--- a/lib/ansible/plugins/action/pause.py
+++ b/lib/ansible/plugins/action/pause.py
@@ -125,8 +125,9 @@ class ActionModule(ActionBase):
fd = None
try:
fd = self._connection._new_stdin.fileno()
- except ValueError:
- # someone is using a closed file descriptor as stdin
+ except (ValueError, AttributeError):
+ # ValueError: someone is using a closed file descriptor as stdin
+ # AttributeError: someone is using a null file descriptor as stdin on windoez
pass
if fd is not None:
if isatty(fd):