Turns out real daemons are hard to kill nicely and interact with.  Went the simple thread/signal way instead.