>> > RATIONALE
>> > A call to the wait() or waitpid() function only returns status on an immediate child process of the *calling process*
>>
>> The pthread rule is, pthread_create() doen't introduce any process tree change. In the other words, kFreeBSD is buggy.
>
> One could argue that a different PID makes a different process, but it's
> correct that it's not a different process.

popen makes different process. and Thread.new don't make a process. isn't it?
Therefore a subthread clealy can use waitpid() for waiting child
process. Moreover
real FreeBSD works this test completely. It's only kFreeBSD issue.

I wonder why kFreeBSD don't handle threading correctly. Long time ago,
linuxthreads made the same mistake and application users sufferd from it.
I didn't expected we observed the same issue at 21th century.