课程名称:C/C++气象数据中心实战,手把手教你做工业级项目
课程章节:2-15,2-16 守护进程的的开发
主讲老师: 吴从周
课程内容:
讲述守护进程的作用和代码实现流程
通过实例演示纂写代码,综合信号量和进程的心跳机制,进一步掌握守护进程的相关运用,
课程收获:
守护进程主要通过检测共享内存中所有服务程序的心跳信息,判断该服务程序是否超时,超时时选择将服务程序进行短时间内的重启操作。通过过与程序调度模块结合,进行保证服务程序永远不停机。
其中,在服务程序重启过程中,分为将该服务程序退出和调用程序调度模块启动他,而守护进程的作用就是第一个,再程序超时时终止它。在终止流程中,会使用到析构函数和exit()函数,要注意 exit函数不会调用 局部变量的析构函数的,所以我们需要把包含析构函数的变量设置为全局变量,因为exit函数会调用 全局变量 的析构函数。其次,return会调用局部或者全局变量 的析构函数。
守护进程的很多内容与心跳机制 的相关代码类似,我们可以节约开发时间,在实际开发中很多时候的关键是复制,节约时间
kill函数 他的返回值是当进程存在时,返回0,不存在时返回-1. 他有两个参数分别时进程的id和发生的信号值 ,作用主要用于给进程发送终止信号,
在实际开发中,我们需要加上保护措施,代码不一定完全按照你的想法去运行,而且一旦出错整体查找就会很麻烦。所以我们需要自己给自己安上保险,在判断的时候事先想到这行代码会不会由于不同的原因无法执行,我们需要加上出错保护机制,例如出错时在日志中增加某某代码运行失败,或者想到出错之后 写好系统怎么运行的代码,在kill函数之后,万一未终止程序,可以再次调用9信号强制终止程序。
稳定是程序员需要摆在第一位的重要问题。