Das Popen-Objekt ist eigentlich nur ein Wrapper für die Kindprozesse PID, stdin, stdout und stderr sowie einige Komfortfunktionen für deren Verwendung.
Es stellt sich also die Frage, warum Sie Zugriff auf das Popen-Objekt benötigen? Wollen Sie mit dem Kind kommunizieren, es beenden oder prüfen, ob es noch läuft?
In jedem Fall gibt es keine Möglichkeit, ein Popen-Objekt für einen bereits laufenden Prozess erneut zu erwerben.
Der richtige Weg ist, das Kind als Daemon zu starten, wie Tobu vorgeschlagen hat. Ein Teil der Prozedur zur Daemonisierung eines Prozesses besteht darin, stdin und stdout zu schließen, so dass Sie diese nicht verwenden können, um mit dem Kindprozess zu kommunizieren. Stattdessen verwenden die meisten Daemons entweder Pipes oder Sockets, um Clients zu erlauben, sich mit ihnen zu verbinden und ihnen Nachrichten zu senden.
Der einfachste Weg, mit dem Kindprozess zu kommunizieren, ist, eine benannte Pipe vom Kindprozess aus zu öffnen, z.B. /etc/my_pipe, diese benannte Pipe vom Eltern-/Kontrollprozess aus zu öffnen und von dort aus zu schreiben/lesen.
Nach einem kurzen Blick auf python-daemon scheint es mir, dass python-daemon Ihnen helfen wird, Ihren Kindprozess zu dämonisieren, was schwierig zu bewerkstelligen ist, aber es hilft Ihnen nicht mit der Messaging-Seite der Dinge.
Aber wie gesagt, ich denke, Sie müssen uns sagen, warum Sie ein Popen-Objekt für den Kindprozess benötigen, bevor wir Ihnen weiterhelfen können.
0 Stimmen
Können Sie etwas genauer erklären, warum Sie ein Popen-Objekt benötigen, welche Methoden von Popen Sie aufrufen möchten und was der Elternprozess mit dem Kindprozess macht (schreibt nach stdin, beendet ihn, prüft, ob er noch lebt?)?