En dmon, je comprends pas trop comment __del__ est appel. Ca

marchera trs bien comme a aussi.

darcs-hash:20051109103552-d1718-8a5c2f45288fd293ae911d1dba371ea786add9bd.gz
This commit is contained in:
bernat 2005-11-09 11:35:52 +01:00
parent 552d7673e5
commit bda07d81b6

View file

@ -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...