diff options
author | Glenn Morris <rgm@gnu.org> | 2016-11-15 23:28:47 -0800 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2016-11-15 23:28:47 -0800 |
commit | 36b99556dea23f17d5598bbed366e7201eec9fbb (patch) | |
tree | b464455587a53e706288f95da497721c5c42a2c9 /src/lisp.h | |
parent | 35007ad9daca9cac39fe758b5815aa6389379d38 (diff) | |
download | emacs-36b99556dea23f17d5598bbed366e7201eec9fbb.tar.gz |
Add --new-daemon, which runs in the foreground and does not fork
This is intended for modern init systems such as systemd,
which manage many of the traditional aspects of daemon behavior
themselves. (Bug#2677)
* src/emacs.c (daemon_type): New integer.
(usage, standard_args): Add --old-daemon and --new-daemon.
(main): Handle --old-daemon and --new-daemon arguments.
Restrict all the forking and complicated daemon stuff to old-daemon.
(Fdaemon_initialized): Handle new-style daemon.
* src/lisp.h (IS_DAEMON, DAEMON_RUNNING) [!WINDOWNT]:
Replace daemon_pipe with daemon_type.
* doc/emacs/cmdargs.texi (Initial Options):
* doc/emacs/glossary.texi (Glossary):
* doc/emacs/misc.texi (Emacs Server):
* doc/lispref/display.texi (Window Systems):
* doc/lispref/os.texi (Startup Summary): Related doc updates.
* etc/NEWS: Mention this.
* etc/emacs.service: Use Type=simple and --new-daemon.
Diffstat (limited to 'src/lisp.h')
-rw-r--r-- | src/lisp.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/lisp.h b/src/lisp.h index aaa44232720..e087828d94f 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4139,12 +4139,11 @@ extern bool no_site_lisp; /* True means put details like time stamps into builds. */ extern bool build_details; -/* Pipe used to send exit notification to the daemon parent at - startup. On Windows, we use a kernel event instead. */ #ifndef WINDOWSNT -extern int daemon_pipe[2]; -#define IS_DAEMON (daemon_pipe[1] != 0) -#define DAEMON_RUNNING (daemon_pipe[1] >= 0) +/* 0 not a daemon, 1 new-style (foreground), 2 old-style (background). */ +extern int daemon_type; +#define IS_DAEMON (daemon_type != 0) +#define DAEMON_RUNNING (daemon_type >= 0) #else /* WINDOWSNT */ extern void *w32_daemon_event; #define IS_DAEMON (w32_daemon_event != NULL) |