Your short answer is correct, but your solution doesn't work on AIX at least. It suffers from the same problem
as the normal 'alarm' solution -- the parent dies, but the child (or grandchild in this case) lives on.
The kill
doesn't kill the grandchild created by system (even if you use -9 instead of
a 9). Also, I'm not sure why you are using an alarm loop
around a non-blocking waitpid. It's just going to spin
the CPU for 10 seconds. You should either use alarm with
a blocking waitpid or just poll/sleep/poll with the non-blocking one.
bluto