subprocess: stdin=NULL

Hallo, ich suchte nach einem Weg, wie man bei subprocess.Popen() das Vererben des stdin-Kanal unterbinden kann. Hier habe ich einen Hinweis gefunden: http://bugs.python.org/issue1220113 subprocess.Popen(...stdin=open('/dev/null')) Das funktioniert für mich (linux only). Aber prinzipiell wäre ein NULL analog zu PIPE doch schöner. Gibt es dafür schon eine portable Lösung? Gruß, Thomas -- Thomas Guettler, http://www.thomas-guettler.de/ E-Mail: guettli (*) thomas-guettler + de

Am 27.09.2011 15:14, schrieb Thomas Guettler:
Hallo,
ich suchte nach einem Weg, wie man bei subprocess.Popen() das Vererben des stdin-Kanal unterbinden kann.
Hier habe ich einen Hinweis gefunden: http://bugs.python.org/issue1220113
subprocess.Popen(...stdin=open('/dev/null'))
Das funktioniert für mich (linux only). Aber prinzipiell wäre ein NULL analog zu PIPE doch schöner.
Gibt es dafür schon eine portable Lösung?
Ja, gibt es: import os open(os.devnull) Christian

Am 27.09.2011 15:14 schrieb Thomas Guettler:
Hier habe ich einen Hinweis gefunden: http://bugs.python.org/issue1220113
subprocess.Popen(...stdin=open('/dev/null'))
Das funktioniert für mich (linux only). Aber prinzipiell wäre ein NULL analog zu PIPE doch schöner.
Gibt es dafür schon eine portable Lösung?
Nimm eine PIPE und schließe das schreibende Ende unmittelbar. sp = subprocess.Popen(...stdin=subprocess.PIPE) sp.stdin.close()

On 06.10.2011 10:58, Thomas Rachel wrote:
Am 27.09.2011 15:14 schrieb Thomas Guettler:
Hier habe ich einen Hinweis gefunden: http://bugs.python.org/issue1220113
subprocess.Popen(...stdin=open('/dev/null'))
Das funktioniert für mich (linux only). Aber prinzipiell wäre ein NULL analog zu PIPE doch schöner.
Gibt es dafür schon eine portable Lösung?
Nimm eine PIPE und schließe das schreibende Ende unmittelbar.
sp = subprocess.Popen(...stdin=subprocess.PIPE) sp.stdin.close()
Ja, stimmt. Danke für den Vorschlag. Thomas
participants (4)
-
Christian Heimes
-
Thomas Guettler
-
Thomas Guettler
-
Thomas Rachel