rewrite open-process in C, for robustness