最近看emanate/snmpd 的代码;这个代码好长时间没有更新;其中在做配置文件初始化的一个函数里有用到fgets,是这么用的:

fgets(formatString + strlen(formatString),FORMATSTRING_BUFSIZ - strlen(formatString),stdin);
end = strrchr(formatString,'\n');

看到这个代码,基本可以判断,代码逻辑不缜密,有缺陷;
因为对fgets的返回值没有做判断。

更严重的是后续的代码里:

    while ((bb < 1)) {printf("The following");fgets(formatString, 33, stdin);end = strrchr(formatString,'\n');if (end != NULL) {*end = '\0';}sscanf(formatString, "%d", &bb);}

这个代码没有判断fgets的值,如果formatString一直取不到值,就会导致无限循环,将CPU吃满。

这个可能产生无限循环的情况:参见:
https://mzhan017.blog.csdn.net/article/details/124812425#C99_specifies_that_the_EOF_condition_on_a_file_is_sticky_27

glibc: fgets 使用规范;如果不规范,CPU吃满的一个例子相关推荐

  1. 如何应对数据库CPU打满?最优解在这里...

    如何用好数据库,调校数据库使其发挥最优的性能? 如何快速诊断和应对各种原因导致的突发数据库性能问题? 如何以最低资源成本满足业务需求? ...... 这些复杂的运维难题最优解到底是什么? 今天(4月2 ...

  2. 网站CPU占满,微信经常SSL不能建立的错误排查

    微信SSL经常建立失败的问题排查 问题描述 及应急方案 问题描述: 使用微信访问时,一段时间过后总会提示SSL连接无法建立[程序中需要获取用OpenId,因此有调用企业微信Api的请求] 应急方案:在 ...

  3. python在服务器上运行慢_Windows监控进程服务器IIS进程状态解决CPU暴满造成服务器运行缓慢 Python版...

    之前写了bat脚本来解决服务器IIS进程造成CPU暴满状态之后感觉不胜满意,且不效率.后发现用Python的脚本比bat高效且安全不会存在误杀现象,现将其分享与大家其程序和源码我放在了百度网盘,如果有 ...

  4. Linux 服务器 kswapd0 进程 CPU占满

    引言 今天再一次体验整个cpu 占满的问题, 并且究其根本,寻找问题所在, 真的是欲哭无泪了, 太难了! 第一次没有太在意, 重启了服务器好像好了那么一阵, 最近呢,又往服务器上部署了项目, 今天终于 ...

  5. 因 Redis Key 命令不规范,导致熬了一个通宵才把Key删完了!

    来源:http://dwz.date/cmSG 前言 由于有一条业务线不理想,高层决定下架业务.对于我们技术团队而言,其对应的所有服务器资源和其他相关资源都要释放.释放了8台应用服务器: 1台es服务 ...

  6. 从HTTP的底层规范上面学习一下,用实际的例子保你醍醐灌顶

    文章目录 简述 关于Http的基本标准 Http的四要素 四要素举例 最常见的get请求 普通字符串的post请求 普通form表单的post请求 multi-form(多表单)的post请求 Htt ...

  7. 设计模式十三:用一个组配吃鸡电脑的例子说清楚建造者模式

    文章目录 一.背景 二.实现 三.总结 设计模式一: <用一个营销策略的实例说清楚策略模式的应用场景> 设计模式二: <用一个股票买卖的例子说清楚观察者模式> 设计模式三: & ...

  8. CPU值满resmgr:cpu quantum造成的Oracle等待事件解决办法

    cpu quantum造成的Oracle等待事件解决办法 不少接触数据库的朋友有一个困扰已久的问题--resmgr:cpu quantum.已经遇过不少次这种CPU突然全绿的情况,通过隐含参数屏蔽了一 ...

  9. 吃自助餐怎么样一个顺序吃法才合算?

    除了合算,也得吃得健康,今天介绍健康合算的吃法顺序: 首先别一上来就大开吃戒. 开始吃自助餐时,不要一上来就大吃,而应该先取一小碗清淡的汤或粥,或者吃些清淡的蔬菜水果开胃,再慢慢吃点主食,最后再吃鱼禽 ...

最新文章

  1. 程序设计作业: 车模+数模 = ?
  2. PyTorch:Faster-RCNN
  3. oracle如何不让表自动建分区,怎么自动创建表空间和表分区
  4. js-array自增长方式
  5. Oracle 列类型说明
  6. leapmotion和HTC和投影视角注意事项
  7. er图 navicat_用Navicat制作ER图及与SQL互相转化
  8. 《嵌入式 – GD32开发实战指南》第10章 串口通信
  9. 基于matlab的微分例题,matlab程序设计常微分方程编程例题答案数学.doc
  10. 嘿,飞哥(F.R.E.C.O)!不一般的云联盟
  11. 金蝶EAS BOS开发固定报表流程
  12. dialog出现Uncaught RangeError: Maximum call stack size exceeded错误
  13. 如何使用python-docx第三方库,操作读写doc Word文档,快速制作数据报表
  14. 小米手机、华为手机、一加手机、小米手环NFC刷门禁卡教程!
  15. less和more的区别
  16. 杰奇不支持mysql8,【教程】杰奇小说手机端安装使用说明
  17. echarts的圆饼图自定义颜色
  18. IMU的ROS调试开发工具包:imu_tools
  19. 【教育】世界上最伟大的25个教育法则
  20. php 获取新浪股票行情数据,python 抓取新浪财经股票数据

热门文章

  1. 对于他,我的失败不算什么
  2. 简单理解DLL文件是什么,如何使用?
  3. 制作证件照 抠图 模糊修复
  4. 爬虫基础篇之selenium登陆获取阿里腾讯cookie
  5. 抖音上超好听的神曲音乐,Python教你一次性下载!
  6. 鸿蒙荣耀magic2,赵丽颖晒荣耀Magic2真机 后置三摄值得期待
  7. 你是否也忽略了对硬盘的保养?避免硬盘坏道的几点注意
  8. 总是陷入算计扯皮烂泥坑的软件外包的出路在哪里?
  9. 自律给我自信-为什么要自律
  10. 可爱的女儿,温暖的家