Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Mar 2017 22:08:01 +0100
From:      Dirk-Willem van Gulik <dirkx@webweaving.org>
To:        "Ngie Cooper (yaneurabeya)" <yaneurabeya@gmail.com>
Cc:        "Rodney W. Grimes" <freebsd-rwg@pdx.rh.CN85.dnsmgr.net>, freebsd-hackers@freebsd.org
Subject:   Re: kill -0 <pid> --- side effect or supported
Message-ID:  <FBCA1111-5C6A-4E89-B6FE-94606EA21B9C@webweaving.org>
In-Reply-To: <35C6F2AA-309E-4D58-8191-AB99F0195BEC@gmail.com>
References:  <201703032230.v23MUg5b072955@pdx.rh.CN85.dnsmgr.net> <35C6F2AA-309E-4D58-8191-AB99F0195BEC@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

> On 3 Mar 2017, at 23:42, Ngie Cooper (yaneurabeya) =
<yaneurabeya@gmail.com> wrote:
>=20
>>=20
>> On Mar 3, 2017, at 14:30, Rodney W. Grimes =
<freebsd-rwg@pdx.rh.CN85.dnsmgr.net> wrote:
>>=20
>> -- Start of PGP signed section.
>> [ Charset UTF-8 unsupported, converting... ]
>>>=20
>>>> On Mar 3, 2017, at 14:12, Dirk-Willem van Gulik =
<dirkx@webweaving.org> wrote:
>>>>=20
>>>> I regularly use  'kill -0 <pid>' on FreeBSD as  a way to test if a =
certain process is still running (but without actually sending the =
signal). And I think it has worked reliably since the mid 80's.
>>>>=20
>>>> Is it actually a properly supported use - as I recently happened to =
notice that it does not seem to be all that documented in kill(
>>>=20
>>> It better work. I have code that relies on it :)?
>>>=20
>>> It does work as you noted, according to truss:
>>>=20
>>> # sudo truss -ff kill -0 1 2>&1
>>> ...
>>> 79940: kill(1,0)                                 =3D 0 (0x0)
>>> ?
>>> #
>>>=20
>>> As noted in kill(2), this is one of the valid values:
>>>=20
>>>    a group of processes.  The sig argument may be one of the signals
>>>    specified in sigaction(2) or it may be 0, in which case error =
checking is
>>                               ^^^^^^^^^^^^^^^^
>>=20
>> That bit of information should be promoted from kill(2) to kill(1) by
>> adding 0 to the list as ?.
>=20
> Actually=E2=80=A6 it is mentioned in kill(1) =E2=80=94 you just have =
to read between the lines:
>=20
>     -signal_number
>             A non-negative decimal integer, specifying the signal to =
be sent
>             instead of the default TERM.
>=20
> 0 is technically a non-negative real number.
>=20
> It might be a good idea to clarify this point/behavior by pointing to =
kill(2) for the signal behavior/description noted above.

Posix @ Opengroup says:

	=
http://pubs.opengroup.org/onlinepubs/009695399/functions/kill.html

	The kill() function shall send a signal to a process or a group =
of processes specified by pid. The signal to be sent is specified by sig =
and is either one from the list given in <signal.h> or 0. If sig is 0 =
(the null signal), error checking is performed but no signal is actually =
sent. The null signal can be used to check the validity of pid.

I guess this could be added - with perhaps the note/warning on the =
'zombie' processes - as this is subtly different between unixes.

Dw





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FBCA1111-5C6A-4E89-B6FE-94606EA21B9C>