bitkeeper revision 1.1159.79.1 (414b5fab__RjPaRIcKFGQmiG7K6ggA)

SrvDaemon.py, xend:
  Xend daemonization fixes from Charles Coffing.
This commit is contained in:
kaf24@freefall.cl.cam.ac.uk committed 2004-09-17 22:05:31 +00:00
1 parent 9976050eca
commit 90d122ec63
3 files changed
+41 -12

No files matched your search

+3 -3
View File
@@ -10,15 +10,15 @@
case "$1" in
start)
xend start
exit $?
;;
stop)
xend stop
exit $?
;;
status)
xend status
;;
restart|reload)
xend restart
;;
*)
# do not advertise unreasonable commands that there is no reason
@@ -27,5 +27,5 @@ case "$1" in
exit 1
esac
exit 0
exit $?
+5 -2
View File
@@ -8,11 +8,12 @@
Provides console server and HTTP management api.
Run:
xend start
The daemon is stopped with:
Restart:
xend restart
The daemon is stopped with:
xend stop
The daemon should reconnect to device control interfaces
@@ -107,6 +108,8 @@ def main():
return daemon.stop()
elif sys.argv[1] == 'restart':
return daemon.stop() or daemon.start()
elif sys.argv[1] == 'status':
return daemon.status()
else:
print 'not an option:', sys.argv[1]
return 1
+33 -7
View File
@@ -42,7 +42,7 @@ import console
import domain
from params import *
DEBUG = 1
DEBUG = 0
class NotifierProtocol(protocol.Protocol):
"""Asynchronous handler for i/o on the notifier (event channel).
@@ -419,6 +419,18 @@ class Daemon:
self.cleanup_xend(kill=kill)
self.cleanup_xfrd(kill=kill)
def status(self):
"""Returns the status of the xend and xfrd daemons.
The return value is defined by the LSB:
0 Running
3 Not running
"""
if (self.cleanup_process(XEND_PID_FILE, "xend", False) == 0 or
self.cleanup_process(XFRD_PID_FILE, "xfrd", False) == 0):
return 3
else:
return 0
def install_child_reaper(self):
#signal.signal(signal.SIGCHLD, self.onSIGCHLD)
# Ensure that zombie children are automatically reaped.
@@ -451,22 +463,36 @@ class Daemon:
pass
else:
# Child
self.set_user()
os.execl("/usr/sbin/xfrd", "xfrd")
def start(self, trace=0):
"""Attempts to start the daemons.
The return value is defined by the LSB:
0 Success
4 Insufficient privileges
"""
xend_pid = self.cleanup_xend()
xfrd_pid = self.cleanup_xfrd()
if xfrd_pid == 0:
self.start_xfrd()
if xend_pid > 0:
return 1
# Detach from TTY.
if not DEBUG:
os.setsid()
sys.stdin.close();
sys.stdout.close();
sys.stderr.close();
os.close(0);
os.close(1);
os.close(2);
if self.set_user():
return 1
return 4
os.chdir("/")
if xfrd_pid == 0:
self.start_xfrd()
if xend_pid > 0:
# Trying to run an already-running service is a success.
return 0
self.install_child_reaper()
if self.fork_pid(XEND_PID_FILE):
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.