とみたです。

At Wed, 16 Feb 2000 00:38:35 +0900,
matz / netlab.co.jp (Yukihiro Matsumoto) wrote:

> |waitpid() は「子プロセスがいるけど誰も死んでない」と0を返すけど、「子プ
> |ロセスがいない」場合は ECHILD エラーになるって仕様だと思います。

> がーん。
> 
>     RETURN VALUE
>        The process ID of the child which exited, -1 on  error  or
>        zero  if  WNOHANG  was used and no child was available (in
>        which case, errno is set to an appropriate value).
> 
> からはそうは読めませんでした。

Solaris7 のマニュアルの RETURN VALUES では次のようになってます(抜粋)

     If  waitpid
     was  invoked  with  WNOHANG set in options, it has at  least
     one child process specified by pid for which status  is  not
     available,  and  status  is  not  available  for any process
     specified by pid, then 0  is  returned. 

# Solaris と Linux で waitpid のこの辺の仕様が違うって可能性もあるかな…
# ないか…(^^;

> ま、それで当初の問題は解決した
> として、でWNOHANGによって 0 が返ったときには 0 を返すべきで
> しょうか、nilを返すべきでしょうか?

私は 0 でいいと思います。nil だと「偽」とか「失敗」とかってイメージが私
にはあるので…。

--
とみたまさひろ <tommy / tmtm.org>