commit 9adfeea6c2da2761ba408a9fe2a22787058fcdf2
parent 208db057980dbd96297d8859ed59b4f7ba2dd71a
Author: Kris Maglione <kris@suckless.org>
Date: Mon, 24 May 2010 13:04:40 -0400
[pygmi] Don't launch background processes with IO pipes. Restore SIGPIPE. (Closes issue #176)
Diffstat:
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/alternative_wmiircs/python/pygmi/util.py b/alternative_wmiircs/python/pygmi/util.py
@@ -1,4 +1,5 @@
import os
+import signal
import subprocess
import pygmi
@@ -10,10 +11,11 @@ def _():
def call(*args, **kwargs):
background = kwargs.pop('background', False)
+ pipe = subprocess.PIPE if not background else None
input = kwargs.pop('input', None)
- p = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
- stderr=subprocess.PIPE, cwd=os.environ['HOME'],
- close_fds=True, **kwargs)
+ p = subprocess.Popen(args, stdin=pipe, stdout=pipe, stderr=pipe,
+ preexec_fn=lambda: signal.signal(signal.SIGPIPE, signal.SIG_DFL),
+ cwd=os.environ['HOME'], close_fds=True, **kwargs)
if not background:
return p.communicate(input)[0].rstrip('\n')