Daemon beendet sich ohne Angabe von Gründen bei Dateizugriff
Verfasst: Mittwoch 18. Februar 2009, 10:35
Ich fange gerade an mit Python zu programmieren und suche mir das schickste aus dem Netz zusammen, daher nehmt es mir nicht übel, wenn ich etwas übersehen habe, was einem routinierten "Pythoner" sofort auffällt
Ich schreibe gerade einen daemon der per uart (pyserial) mit einer Gegenstelle reden soll und den mpd steuern (mpd).
Dabei verwende ich daemon für den Daemon. Vorher hatte ich das Ganze schon in C geschrieben, aber das ist mir auf dauer zu viel Aufwand, python nimmt einem da ja schon einiges ab...
Wenn ich jetzt im Code z.B. in eine Datei schreiben will, dann beendet sich der daemon ohne irgend eine Meldung. Genauso wen ich ins syslog schreiben will.
Dabei ist es völlig egal ob ich die Datei nach oder vor dem daemon.daemonize öffne. Erst sobald er schreiben soll, verabschiedet er sich. Das öffnen macht ihm noch nichts aus.
Ich hoffe ihr könnt mir sagen, woran das liegt.
Achso, noch eine kleine Frage, welche aber nicht wirklich wichtig ist.
Wenn ich in einer bash einen Prozess mit & in den Hintergrund schiebe (also quasi zum Daemon machen), dann erscheinen dessen Konsolenmeldungen immer noch auf der Konsole. Weiss einer wie ich hier ein print wieder auf die Konsole umleiten kann?
Ich schreibe gerade einen daemon der per uart (pyserial) mit einer Gegenstelle reden soll und den mpd steuern (mpd).
Dabei verwende ich daemon für den Daemon. Vorher hatte ich das Ganze schon in C geschrieben, aber das ist mir auf dauer zu viel Aufwand, python nimmt einem da ja schon einiges ab...
Wenn ich jetzt im Code z.B. in eine Datei schreiben will, dann beendet sich der daemon ohne irgend eine Meldung. Genauso wen ich ins syslog schreiben will.
Code: Alles auswählen
import syslog
import daemon
...
datei = open('datei', 'a')
daemon.daemonize()
datei.write('bla')
...
syslog.syslog(0, 'bla')
...
Ich hoffe ihr könnt mir sagen, woran das liegt.
Achso, noch eine kleine Frage, welche aber nicht wirklich wichtig ist.
Wenn ich in einer bash einen Prozess mit & in den Hintergrund schiebe (also quasi zum Daemon machen), dann erscheinen dessen Konsolenmeldungen immer noch auf der Konsole. Weiss einer wie ich hier ein print wieder auf die Konsole umleiten kann?