课程名称:C/C++气象数据中心实战,手把手教你做工业级项目
课程章节:2-15,2-16 守护进程的的开发
主讲老师: 吴从周
课程内容:
学习如何修改测试数据程序,使其能够拥有生成历史数据文件的功能
增加信号处理函数,能够处理2和15信号
将生成测试数据的程序的心跳信息写入共享内存
课程收获:
在生成测试数据程序中,存在文件写入的操作,其中文件写入函数中的操作是先写入一个临时文件,再将临时文件进而转换为正式的数据文件,然而若在其中发生错误,也需要函数的析构函数参与到其中,使得临时文件能够删除,所以我们需要将定义的文件操作类的CFile类对象设置为全局变量,便于在使用exit函数退出时能够正确使用析构函数。
这个问题需要得到注意,在数据处理的过程中,千里之堤溃于蚁穴,特别是拥有循环结构的函数中,一旦一个问题出现,往往伴随着比较严重的问题发生。
void EXIT(int sig); //程序退出和信号2,15处理函数。
这个函数的用法已经很熟练, 通过signal函数来处理信号,值得注意的是,我们在使用signal函数之前需要关闭IO和信号,避免不必要的问题。
历史文件的处理,需要分三步操作。一是通过argc的值来判断是否需要生成历史文件数据,如果需要,则将需求的历史时间替代掉我们在生成测试数据函数中 获取的当前时间从而获取的观测时间,通过历史时间将其取代之后,后续的时间就都是历史时间了。
最后我们还需要修改一下文件的生成时间,我们通过开发框架中的Utime函数进行操作,将文件正常的生成时间改变为输入的历史时间。
这个程序依然也需要将心跳信息写入共享内存,用于守护程序判断该程序是否还在运行。但是由于这个程序中没的循环结构是写入文件,不存在失败,并且运行时间较短,所以更新心跳的功能也可以不使用。
在实际开发中,我们需要将不同函数的功能进行拆分,变成一个一个的小功能,这样才能在程序开发中得到进步,在不同的项目中能够使用相同的代码,这个仅仅只需要复制粘贴,大大减少了开发时间,加快了开发效率,在日常的学习中我们也需要注意,学习这个思路和逐步形成自己的开发框架,这样才能逐渐将自己的开发能力得到更好的发挥,加速从中级程序员到高级程序员的蜕变。