There is no synchronization between your two processes. It's entirely conceivable that the child process receives an unhandled signal and dies before it gets to execute any of its signal
calls.
In fact, that's extremely likely: The parent process continues execution immediately after the fork()
and performs the kills, while the child process first needs to be created and scheduled. Both of those take a very long time compared to the kill calls in the parent, and if you're on a single-core machine, you'd have to be very lucky if you wanted to see the parent be suspended before it gets to the kill()
line.