Motivation: In Windows, ::system() causes a terminal console window to pop up. This window grabs the focus away from the user, an irritating interruption to workflow.
Solution: Attempt to use CreateProcess() first. If this doesn't work for any reason, fall back to the previous solution and call ::system().