Daemon starten - Problem mit offenen Filehandles
Verfasst: Dienstag 24. November 2009, 11:56
Hallo,
ich habe folgende Methode in einem separetem Pythonskript, welches einen Daemon starten soll, der auch nach Beendigung des PythonSkriptes laufen soll.
Der Daemon wird auch richtig gestartet.
Nun wird aber meine Methode wiederum in anderen Python-Skripten genutzt, welche nicht in meiner Verantwortung liegen und ich auch keinen Einfluss auf diese habe.
Die Methode notMyMethod() liefert nun folgenden Traceback
Also kann ein os.rename() oder auch os.remove() nicht klappen.
Nun meine Frage:
Wie kann ich meinen Daemon starten, ohne dass er die offenen Filehandles übergeben bekommt?
Die Umgebung (Umgebungsvariablen) für den Daemon sollte nach Möglichkeit erhalten bleiben.
Auf die aufrufende Methode notMyMethod() habe ich keinen Einfluss und kann diese nicht ändern.
Das Skript soll sowohl unter Windows als auch unter Unix laufen.
Die verwendete Pythonversion ist 2.4, diese darf auch nicht verändert werden.
Vielen Dank für Eure Tipps vorab.
Gruss Thomas
ich habe folgende Methode in einem separetem Pythonskript, welches einen Daemon starten soll, der auch nach Beendigung des PythonSkriptes laufen soll.
Code: Alles auswählen
def startMyDaemon():
MY_DAEMON_EXE = "C:\\path_to_my_daemon\\my_daemon.exe"
cmdDaemon = os.path.basename(MY_DAEMON_EXE) + " -my_daemon_arg"
os.spawnl(os.P_NOWAIT, MY_DAEMON_EXE, cmdDaemon)
return
Der Daemon wird auch richtig gestartet.
Nun wird aber meine Methode wiederum in anderen Python-Skripten genutzt, welche nicht in meiner Verantwortung liegen und ich auch keinen Einfluss auf diese habe.
Code: Alles auswählen
def notMyMethod():
f = open("notMyFile", "w")
f.write("text_text_text")
startMyDaemon.startMyDaemon()
f.write("text_text_text")
f.close()
os.rename("notMyFile", "anaotherNotMyFile")
return
Die Methode notMyMethod() liefert nun folgenden Traceback
- >>os.rename(notMyFile, anaotherNotMyFile)
>>OSError: [Errno 13] Permission denied
Also kann ein os.rename() oder auch os.remove() nicht klappen.
Nun meine Frage:
Wie kann ich meinen Daemon starten, ohne dass er die offenen Filehandles übergeben bekommt?
Die Umgebung (Umgebungsvariablen) für den Daemon sollte nach Möglichkeit erhalten bleiben.
Auf die aufrufende Methode notMyMethod() habe ich keinen Einfluss und kann diese nicht ändern.
Das Skript soll sowohl unter Windows als auch unter Unix laufen.
Die verwendete Pythonversion ist 2.4, diese darf auch nicht verändert werden.
Vielen Dank für Eure Tipps vorab.
Gruss Thomas