This is a tiny helper utility to force programs which insist on daemonizing themselves to run in the foreground.
It's like djb's fghack, except it's not a hack, because it makes use of the
PR_SET_CHILD_SUBREAPER
flag added to prctl(2)
in version 3.4 of the Linux
kernel. To quote the documentation:
When a process is marked as a child subreaper, all of the children that it
creates, and their descendants, will be marked as having a subreaper. In
effect, a subreaper fulfills the role of init(1) for its descendant
processes. Upon termination of a process that is orphaned (i.e., its
immediate parent has already terminated) and marked as having a subreaper,
the nearest still living ancestor subreaper will receive a SIGCHLD signal
and will be able to wait(2) on the process to discover its termination
status.
undaemonize foobard -f /etc/foobard.conf
make
sudo install -o root -g root -m 755 undaemonize /usr/local/bin
undaemonize
does not (currently) forward signals to its child processes. If
you kill undaemonize
, the daemon will not be killed.
undaemonize
is released under the MIT license. See LICENSE
.