Wait for message from MQ or pipe{ if message eq a{ fork with pipe(parent exits block) child does X child tells parent results child dies } if message eq b{ run sub } }