我正在考虑编写一个服务器应用程序 - 类似于mySQL或Apache。
主要要求如下:
- 客户端将通过TCP/IP(套接字)与服务器通信
- 服务器将生成一个新的子进程来处理请求(类似于Apache)
理想情况下,我希望使用BOOST库,而不是尝试重新发明我的代码。一定有地方有代码可以做到我所要做的大部分事情 - 所以我可以使用它(或者至少作为起点的一部分) - 有人能否指向一个有用的链接?
如果(希望不太可能)没有可用作起点的代码,有人能指出最合适的BOOST库以使用 - 并提供有关如何继续的一般指南吗?
我主要担心的是如何知道何时其中一个子进程崩溃。据我所知,有两种方法可以做到这一点:
- 在父进程和子进程之间使用心跳(这很快变得混乱,并引入了更多可能出错的事情)
- 以超时参数包装进程生成 - 但这是一种愚蠢的方法,因为如果子进程正在进行耗时的工作,则父进程可能错误地认为子进程已死亡
哪种方法是让父进程知道子进程已死的最佳实践?
[编辑]
顺便说一句,我正在Linux上开发/运行/部署