为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第9天 C气象数据中心 第二章 2-17节 完善生成测试数据程序

标签:
C++

课程名称:C/C++气象数据中心实战,手把手教你做工业级项目


课程章节:2-15,2-16 守护进程的的开发


主讲老师: 吴从周


课程内容:

学习如何修改测试数据程序,使其能够拥有生成历史数据文件的功能

增加信号处理函数,能够处理2和15信号

将生成测试数据的程序的心跳信息写入共享内存









课程收获:


在生成测试数据程序中,存在文件写入的操作,其中文件写入函数中的操作是先写入一个临时文件,再将临时文件进而转换为正式的数据文件,然而若在其中发生错误,也需要函数的析构函数参与到其中,使得临时文件能够删除,所以我们需要将定义的文件操作类的CFile类对象设置为全局变量,便于在使用exit函数退出时能够正确使用析构函数。

这个问题需要得到注意,在数据处理的过程中,千里之堤溃于蚁穴,特别是拥有循环结构的函数中,一旦一个问题出现,往往伴随着比较严重的问题发生。


https://img1.sycdn.imooc.com/62f5063a000163a510890825.jpg

void EXIT(int sig);   //程序退出和信号2,15处理函数。

这个函数的用法已经很熟练, 通过signal函数来处理信号,值得注意的是,我们在使用signal函数之前需要关闭IO和信号,避免不必要的问题。



历史文件的处理,需要分三步操作。一是通过argc的值来判断是否需要生成历史文件数据,如果需要,则将需求的历史时间替代掉我们在生成测试数据函数中 获取的当前时间从而获取的观测时间,通过历史时间将其取代之后,后续的时间就都是历史时间了。

 

最后我们还需要修改一下文件的生成时间,我们通过开发框架中的Utime函数进行操作,将文件正常的生成时间改变为输入的历史时间。


这个程序依然也需要将心跳信息写入共享内存,用于守护程序判断该程序是否还在运行。但是由于这个程序中没的循环结构是写入文件,不存在失败,并且运行时间较短,所以更新心跳的功能也可以不使用。


在实际开发中,我们需要将不同函数的功能进行拆分,变成一个一个的小功能,这样才能在程序开发中得到进步,在不同的项目中能够使用相同的代码,这个仅仅只需要复制粘贴,大大减少了开发时间,加快了开发效率,在日常的学习中我们也需要注意,学习这个思路和逐步形成自己的开发框架,这样才能逐渐将自己的开发能力得到更好的发挥,加速从中级程序员到高级程序员的蜕变。


https://img2.sycdn.imooc.com/62f5fec80001b7da17400930.jpg


https://img3.sycdn.imooc.com/62f5ff0400015d3509650670.jpg














点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消