If SIGNAL is zero, no signal is sent to the process, but the kill(2)
system call will check whether it's possible to send a signal to it (that
means, to be brief, that the process is owned by the same user, or we are
the super-user). This is a useful way to check that a child process is
alive (even if only as a zombie) and hasn't changed its UID. See
perlport for notes on the portability of this construct.

Unlike in the shell, if SIGNAL is negative, it kills
process groups instead of processes. (On System V, a negative PROCESS
number will also kill process groups, but that's not portable.) That
means you usually want to use positive not negative signals. You may also
use a signal name in quotes.