Sorry, but sending SIGCHLD to a process to check if it is running is plain wrong.
There is explicit "0" to test if a process is accepting a signal at all, so the correct form would be
kill(0,$pid)
However note, that either way you will receive a !=0 result if you are not root and the process is not owned by you.