Switch to async_exec so we can interrupt the process in response to signals
Refactorings and add ability to cancel commands
Capture CTRL-C and cancel the running command