简体   繁体   中英

Error Handling in Linux Daemon

I'm writing a server Linux daemon. I want to know what protocol is in the UNIX/Linux community for what a daemon should do when it encounters a fatal error (eg. a server failing to listen, a segmentation fault, etc.). I have already done the whole thing with the system log, but I want to know what to do with a fatal error. Should I log and keep running in a infinite, do-nothing loop? Should I log and exit? What is the standard thing to do here and how do I do it?

The daemon is written in C++, and I'm using a custom exception system to wrap POSIX error codes, so I'll know when things are fatal.

There are degrees of 'fatal error'.

  • A server failing to listen is possibly a temporary issue; your daemon should probably continue trying to connect, maybe retrying periodically, and backing off slowly (1 second, 2 seconds, 4 seconds, etc).

  • If you catch a seg fault, maybe the best thing is to try to restart itself, by re-executing the daemon. It might recur, of course.

  • You shouldn't go into an infinite do-nothing loop; you should terminate rather than do that. If your loop isn't infinite but could be broken by a signal or something, maybe do-nothing is OK; I recommend the pause() system call as a way to do nothing without consuming CPU time.

  • You should certainly log what you're doing and why before you exit.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM