From bda07d81b6f1936d2514dace84b0cc05a5815690 Mon Sep 17 00:00:00 2001 From: bernat Date: Wed, 9 Nov 2005 11:35:52 +0100 Subject: [PATCH] En dmon, je comprends pas trop comment __del__ est appel. Ca marchera trs bien comme a aussi. darcs-hash:20051109103552-d1718-8a5c2f45288fd293ae911d1dba371ea786add9bd.gz --- wifi/hotspot.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/wifi/hotspot.py b/wifi/hotspot.py index e6aba22b..c291c5bd 100755 --- a/wifi/hotspot.py +++ b/wifi/hotspot.py @@ -22,20 +22,14 @@ class Server: Il écoutera sur le pipe nommé `socket'.""" # syslog openlog("hotspot.py", LOG_PERROR | LOG_PID) - syslog(LOG_INFO | LOG_LOCAL4, "Demarrage du demon hotspot") # Initialisation de la socket - self._socket_name = socket self._dontclean = False - os.mkfifo(socket, 0600) - self.socket = file(socket, "a+") - - def __del__(self): try: - self.socket.close() + os.unlink(socket) except: pass - if not self._dontclean: - os.unlink(self._socket_name) + os.mkfifo(socket, 0600) + self.socket = file(socket, "a+") def execute(self,cmd): """Exécute une commande. @@ -119,6 +113,7 @@ class Server: def start(self): """Boucle principale""" + syslog(LOG_INFO | LOG_LOCAL4, "Demarrage du demon hotspot") s = self.socket.fileno() while True: # On attend du monde sur la socket @@ -134,5 +129,16 @@ class Server: if __name__ == "__main__": s = Server("/tmp/hotspot.socket") s.daemonize() - s.start() + while True: + try: + s.start() + except: + import traceback + from cStringIO import StringIO + s = StringIO() + sys.stderr = s + traceback.print_exc() + sys.stderr = sys.__stderr__ + syslog(LOG_CRIT | LOG_LOCAL4, "Erreur importante :\n%s" % s.getvalue()) + time.sleep(60) # Pour ne pas flooder...