=over =item kill SIGNAL, LIST =item kill SIGNAL X X Sends a signal to a list of processes. Returns the number of arguments that were successfully used to signal (which is not necessarily the same as the number of processes actually killed, e.g. where a process group is killed). my $cnt = kill 'HUP', $child1, $child2; kill 'KILL', @goners; SIGNAL may be either a signal name (a string) or a signal number. A signal name may start with a C prefix, thus C and C refer to the same signal. The string form of SIGNAL is recommended for portability because the same signal may have different numbers in different operating systems. A list of signal names supported by the current platform can be found in C<$Config{sig_name}>, which is provided by the L|Config> module. See L for more details. A negative signal name is the same as a negative signal number, killing process groups instead of processes. For example, C and C will send C to the entire process group specified. That means you usually want to use positive not negative signals. If SIGNAL is either the number 0 or the string C (or C), no signal is sent to the process, but L|/kill SIGNAL, LIST> checks whether it's I 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 useful to check that a child process is still alive (even if only as a zombie) and hasn't changed its UID. See L for notes on the portability of this construct. The behavior of kill when a I number is zero or negative depends on the operating system. For example, on POSIX-conforming systems, zero will signal the current process group, -1 will signal all processes, and any other negative PROCESS number will act as a negative signal number and kill the entire process group specified. If both the SIGNAL and the PROCESS are negative, the results are undefined. A warning may be produced in a future version. See L for more details. On some platforms such as Windows where the L system call is not available, Perl can be built to emulate L|/fork> at the interpreter level. This emulation has limitations related to kill that have to be considered, for code running on Windows and in code intended to be portable. See L for more details. If there is no I of processes, no signal is sent, and the return value is 0. This form is sometimes used, however, because it causes tainting checks to be run. But see L. Portability issues: L. =back