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