2010-12-23 6 views
1

Ich habe eine GUI-Anwendung in Python geschrieben. Nach dem Starten der GUI sollte es einen eigenständigen Daemon ausführen. Aber wenn ich die GUI schließe oder es abstürzt, wird auch der Daemon beendet. Gibt es eine Möglichkeit, eine Anwendung unabhängig voneinander auszuführen?Wie führe ich eine Standalone-Anwendung von der aktuellen aus?

+0

Da die Antwort gut variieren zwischen Windows vs Unix-wie, welches OS? – Mark

Antwort

1

Während ich einen Daemon nicht starte, habe ich ein pygtk-Programm, das ein anderes Programm mit subprocess.Popen() mit Shell = True startet. Zum Beispiel:

import subprocess 

def callback(self, widget, date=None): 
    cmd = "Your command here" 
    other_process = subprocess.Popen(cmd, shell=True) 

Da dies ein Rückruf an einem Knopf befestigt ist, nimmt pygtk Pflege der Dinge, wenn die Schaltfläche geklickt wird. Selbst wenn ich das erste pygtk GUI-Programm herunterfahre, läuft das zweite Programm weiter. FWIW, das ist auf einem CentOS Linux System.

Ich habe einmal etwas ähnliches mit TkInter gemacht, aber diesen Code habe ich jetzt nicht verfügbar. Das war auf einem Windows XP System. Meine Erinnerung ist, dass der zweite Prozess weiter lief, nachdem der erste gestoppt wurde.

+0

Aber wenn Ihre GUI beendet wird, wird 'cmd' ebenfalls heruntergefahren, was genau das Problem ist, dem der Fragesteller gegenübersteht. –

+0

@Noufal Ibrahim: Ich habe gerade den Eltern-GUI-Prozess erneut getestet und gestoppt. Ich habe den Kindprozess nicht gestoppt, indem ich Code verwendet habe, der fast identisch mit dem oben genannten Code ist. – GreenMatt

+0

Windows oder Linux? Ich denke an Windows, der Child-Prozess wird irgendwie vom Elternteil "getrennt", aber unter UNIX ist es umgekehrt, bis Sie es "dämonisieren". –

2

Unter Linux habe ich dies behandelt, indem meine Elternprozess (in Ihrem Fall die GUI), starten Sie den zweiten Python-Prozess über Subprozess oder os.system. Der 2. Prozess beginnt sofort sich selbst zu dämonisieren. Um dies zu tun, siehe here oder here.

Verwandte Themen