> I suspect that your process has a controlling tty based on this comment
> in the killall() function at src/shared/killall.c:
>
> if (send_sighup) {
> /* Optionally, also send a SIGHUP signal, but only if the process
> has a controlling
> * tty. This is useful to allow handling of shells which ignore
> SIGTERM but react to
> * SIGHUP. We do not send this to processes that have no
> controlling TTY since we
> * don't want to trigger reloads of daemon processes. Also we make
> sure to only send
> * this after SIGTERM so that SIGTERM is always first in the
> queue. */
> ...
> }
>
> Also systemd >= v255 (Fedora 41 has v256) has the directive
> SurviveFinalKillSignal=yes that can be used instead of setting
> argv[0][0] = '@'.
Hi Brian. Thanks very much for your reply.
When I grepped for sighup in the systemd source, I did find the function
killall().
The sighup should not be coming from there because my process has argv[0][0] ==
‘@’ and there is a check for that in the killall() for-loop (it is done in the
static function ignore_proc()).
Also, my process does not have a controlling tty (it is being invoked using the
“init” kernel param).
There is no tty shown when I view its details using ps, and I also don’t see
any ttys when I do “ls -l /proc/<pid>/fd”.
Any other suggestions?
Maybe I should open a github issue for this.
-James M