I've tried small sleep's in various places (mainly so
I could "ps" and see what was running in a macro timescale).
Sleep seems even worse than checking for an already running process. (I have a parallel processing background and so fudging scheduling and synch. issues by sleeping is anathema for me :-).
Anyway, the "ps and exit" check seems to be holding up for now. since there may be others out there with the same problem, I will summarise if I find out more.