Hallo Erwin,
der Parent-Prozess läuft in den default-Zweig, wo er mit waitpid() auf eine Statusänderung des Child-Prozesses wartet. Das passiert bei Dir erst dann, wenn der Child-Prozess beendet wird.
Du kannst an waitpid() als 3. Parameter die Option WNOHANG mitgeben. Die Manpage sagt dazu:
WNOHANG The waitpid() function will not suspend exe-
cution of the calling process if status is
not immediately available for one of the
child processes specified by pid.
Eine bessere, aber kompliziertere Alternative ist es, im Parent einen Signalhandler für SIGCHLD einzubauen und dort den Aufruf von waitpid() durchzuführen. Dann kann waitpid() aus dem default-Zweig raus, und beide Prozesse laufen parallel.
Viele Grüße
Frank