develooper Front page | perl.perl5.porters | Postings from April 2007

RE: [PATCH] Fix kill(0, $pid) on Windows

Thread Previous | Thread Next
From:
Jan Dubois
Date:
April 17, 2007 18:59
Subject:
RE: [PATCH] Fix kill(0, $pid) on Windows
Message ID:
034201c7815d$17162f60$45428e20$@com
On Tue, 17 Apr 2007, youshi10@u.washington.edu wrote:
> Try this:
>
> perl -e 'kill 15, undef; print "Hello, cruel world!";'
>
> And yes, I was the person that originally sent the bug report. If
> someone could provide me with the POSIX spec that says that an
> undefined value equals 0, and a 0 value with kill works out to kill
> the calling process, I'd appreciate it.

From `perldoc -f kill`:

    kill SIGNAL, LIST
            Sends a signal to a list of processes. Returns the number of
            processes successfully signaled (which is not necessarily the
            same as the number actually killed).

Processes are identified by PID, which is a number. `perldoc perlsyn`
says this:

                                         When used as a number, "undef" is
    treated as 0; when used as a string, it is treated as the empty string,

This means that kill(15, undef) should be treated the same as kill(15, 0)
due to Perl data transformation rules.

POSIX (http://www.opengroup.org/onlinepubs/009695399/functions/kill.html) 
says this about using a PID of 0:

    If pid is 0, sig shall be sent to all processes (excluding an
    unspecified set of system processes) whose process group ID is equal
    to the process group ID of the sender, and for which the process has
    permission to send a signal.

Therefore `kill(15, undef)` should send signal 15 to all processes in
the current process group, including the process issuing the kill()
call itself.

Cheers,
-Jan



Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About