exec now returns the exit code, which is useful if the non-zero exit is ignored