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:
parent
552d7673e5
commit
bda07d81b6
1 changed files with 16 additions and 10 deletions
|
@ -22,20 +22,14 @@ class Server:
|
||||||
Il écoutera sur le pipe nommé `socket'."""
|
Il écoutera sur le pipe nommé `socket'."""
|
||||||
# syslog
|
# syslog
|
||||||
openlog("hotspot.py", LOG_PERROR | LOG_PID)
|
openlog("hotspot.py", LOG_PERROR | LOG_PID)
|
||||||
syslog(LOG_INFO | LOG_LOCAL4, "Demarrage du demon hotspot")
|
|
||||||
# Initialisation de la socket
|
# Initialisation de la socket
|
||||||
self._socket_name = socket
|
|
||||||
self._dontclean = False
|
self._dontclean = False
|
||||||
os.mkfifo(socket, 0600)
|
|
||||||
self.socket = file(socket, "a+")
|
|
||||||
|
|
||||||
def __del__(self):
|
|
||||||
try:
|
try:
|
||||||
self.socket.close()
|
os.unlink(socket)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
if not self._dontclean:
|
os.mkfifo(socket, 0600)
|
||||||
os.unlink(self._socket_name)
|
self.socket = file(socket, "a+")
|
||||||
|
|
||||||
def execute(self,cmd):
|
def execute(self,cmd):
|
||||||
"""Exécute une commande.
|
"""Exécute une commande.
|
||||||
|
@ -119,6 +113,7 @@ class Server:
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
"""Boucle principale"""
|
"""Boucle principale"""
|
||||||
|
syslog(LOG_INFO | LOG_LOCAL4, "Demarrage du demon hotspot")
|
||||||
s = self.socket.fileno()
|
s = self.socket.fileno()
|
||||||
while True:
|
while True:
|
||||||
# On attend du monde sur la socket
|
# On attend du monde sur la socket
|
||||||
|
@ -134,5 +129,16 @@ class Server:
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
s = Server("/tmp/hotspot.socket")
|
s = Server("/tmp/hotspot.socket")
|
||||||
s.daemonize()
|
s.daemonize()
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
s.start()
|
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...
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue