Instead directly call execvp(). This change is needed for the soon-to-be-added signal handlers because the /bin/sh parent process does not pass all signals to it's children, particularly SIGUSR1 on Linux. The parameters of createChildProcess had to be changed slightly. utils.exec() also has a changed implementation. A bug involving quoted arguments was knowingly introduced into utils.exec(). Will fix later.