I think there are various ways to accomplish this, but I always use CreateProcess and WaitForSingleObject for this.
CreateProcess will provide you with a handle to the newly created process and, by supplying this handle to the WaitForSingleObject, you can wait for the process to have been terminated.
Greetings,
Rick