2017-01-17 1 views
1

Erstellen eines Unterprozesses scheint einige fd vom Aufrufer schließen zu müssen, zB wenn der Aufrufer fd 0,1,2 (stdin, out, err) und fd = 3 (Datei namens "a.txt") geöffnet hat, und Subprozess. popen Sätze "close_fd = True", wieWarum python subprocess.Popen brauchen close_fd Parameter?

p=subprocess.Popen(cmd,shell=True,close_fds=True,stdout=None... 

Heißt es:

(1) fd 0-3 in subprocess geschlossen sind?

(2), wenn fd 0-3 geschlossen sind, wie Druckzeilen auf Bildschirmunterprozess könnte, oder kommunizieren seine Eingabe/Ausgabe mit Aufrufer von:

p.communicate() 

Gerade etwas verwirrt. Erklärungen?

Antwort

2

Nur 3 ist geschlossen. Vom Popen docs:

Wenn close_fds wahr ist, alle Datei-Deskriptoren außer 0, 1 und 2 werden geschlossen sein, bevor das Kind Prozess ausgeführt wird. (Nur POSIX)

Verwandte Themen