Basically, instead of using `subprocess.Popen` and formatting our args and kwargs for the shell, we just spawn a `CommandProcess` (inherited from `multiprocessing.Process`, which has the same interface as a `threading.Thread`), and then just run `call_command` from that process.