testing whether a process exists in a cross-platform way takes 40 lines, sigh