Frage

Pythons Subprozess Modul standardmäßig übergibt alle geöffneten Dateibeschreibungen zu einem Kind verarbeitet es laicht. Dies bedeutet, dass, wenn der übergeordnete Prozess auf einem Port ist hört und getötet wird, ist es nicht neu starten kann und beginnt wieder zu hören (auch SO_REUSEADDR verwendet wird), weil das Kind noch im Besitz dieses Descriptor ist. Ich habe keine Kontrolle über das Kind Prozess.

Der Subprozess Popen Konstruktor hat ein close_fds Argument akzeptieren, die Deskriptoren auf dem Kind schließen würde, wie ich will. Allerdings gibt es eine Einschränkung, nur auf Windows, das es nur benutzt werden, wenn stdin / stdout auch außer Kraft gesetzt werden, was ich tun muss.

Kennt jemand eine Behelfslösung für diese unter Windows?

War es hilfreich?

Lösung

Was scheint die wichtigsten Informationen, die ich finden kann: SetHandleInformation , in diese Artikel, sollten Sie Hinweise geben.

Sie werden wahrscheinlich brauchen pywin32 und / oder ctypes zu verwenden, um zu erreichen, was Sie wollen.

Andere Tipps

Ich habe keinen Windows-Rechner um, so ist dies nicht getestet, aber ich würde versucht sein, die os.dup und os.dup2 Methoden, um zu versuchen; duplizieren Sie die Datei-Deskriptoren, und diejenigen, anstelle der Eltern diejenigen verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top