Every command gets its own new child with a new ID. The shell waits while that child runs, then prints the next prompt.