waybar/include/util
Mattéo Delabre d8706af2ea
Terminate custom module scripts on exit
(Fixes #358.)

Subprocesses created for custom module scripts were previously left
running when the parent Waybar process exited. This patch sets the
parent-death signal of child processes (PR_SET_PDEATHSIG on Linux,
PROC_PDEATHSIG_CTL on FreeBSD) to SIGTERM.

Caveats:

* This uses Linux-specific or FreeBSD-specific calls. I don’t know if
  this project targets other systems?
* There is a possibility that Waybar exits after calling `fork()`, but
  before calling `prctl` to set the parent-death signal. In this case,
  the child will not receive the SIGTERM signal and will continue to
  run. I did not handle this case as I consider it quite unlikely, since
  module scripts are usually launched only when Waybar starts. Please
  let me know if you think it needs to be handled.

Testing:

* With `htop` open, run Waybar v0.9.5 with a custom module that has an
  `exec` script. Terminate the Waybar process and notice that the
  script’s subprocess stays alive and is now a child of the init
  process.
* Run Waybar with this patch and follow the same steps as above. Notice
  that this time the script’s subprocess terminates when the parent
  exits.
2021-02-12 21:14:46 +01:00
..
clara.hpp feat: args && class id 2018-12-18 17:30:54 +01:00
command.hpp Terminate custom module scripts on exit 2021-02-12 21:14:46 +01:00
format.hpp Revert "Replace lowercase "k" with uppercase "K" to make it look more consistent" 2020-12-25 09:28:05 +01:00
json.hpp refactor: try/catch, sigc trackable 2019-05-13 15:15:50 +02:00
rfkill.hpp refactor(rfkill): poll rfkill events from Glib main loop 2021-02-09 21:27:19 -08:00
sleeper_thread.hpp fix: cancel thread and fix window close 2020-05-27 09:10:38 +02:00
ustring_clen.hpp Use g_unichar_iswide to properly align calendar on CJK locales 2021-01-31 11:53:53 -08:00