fork() + setsid() is too minimal, and does not follow standard daemonize protocol. Normal steps include http://stackoverflow.com/questions/3095566/linux-daemonize
Implementation comments:
- we do output data to stdout/stderr upon some error conditions, so /dev/null might not be the best choice (or it might be, if we just change a few things!)
- would be nice to achieve chroot-ability. That would likely break anybody with crazy symlinking schemes.
Code ref: https://github.com/bitcoin/bitcoin/blob/master/src/bitcoind.cpp#L122