glibc: fgets 使用规范;如果不规范,CPU吃满的一个例子
最近看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吃满的一个例子相关推荐
- 如何应对数据库CPU打满?最优解在这里...
如何用好数据库,调校数据库使其发挥最优的性能? 如何快速诊断和应对各种原因导致的突发数据库性能问题? 如何以最低资源成本满足业务需求? ...... 这些复杂的运维难题最优解到底是什么? 今天(4月2 ...
- 网站CPU占满,微信经常SSL不能建立的错误排查
微信SSL经常建立失败的问题排查 问题描述 及应急方案 问题描述: 使用微信访问时,一段时间过后总会提示SSL连接无法建立[程序中需要获取用OpenId,因此有调用企业微信Api的请求] 应急方案:在 ...
- python在服务器上运行慢_Windows监控进程服务器IIS进程状态解决CPU暴满造成服务器运行缓慢 Python版...
之前写了bat脚本来解决服务器IIS进程造成CPU暴满状态之后感觉不胜满意,且不效率.后发现用Python的脚本比bat高效且安全不会存在误杀现象,现将其分享与大家其程序和源码我放在了百度网盘,如果有 ...
- Linux 服务器 kswapd0 进程 CPU占满
引言 今天再一次体验整个cpu 占满的问题, 并且究其根本,寻找问题所在, 真的是欲哭无泪了, 太难了! 第一次没有太在意, 重启了服务器好像好了那么一阵, 最近呢,又往服务器上部署了项目, 今天终于 ...
- 因 Redis Key 命令不规范,导致熬了一个通宵才把Key删完了!
来源:http://dwz.date/cmSG 前言 由于有一条业务线不理想,高层决定下架业务.对于我们技术团队而言,其对应的所有服务器资源和其他相关资源都要释放.释放了8台应用服务器: 1台es服务 ...
- 从HTTP的底层规范上面学习一下,用实际的例子保你醍醐灌顶
文章目录 简述 关于Http的基本标准 Http的四要素 四要素举例 最常见的get请求 普通字符串的post请求 普通form表单的post请求 multi-form(多表单)的post请求 Htt ...
- 设计模式十三:用一个组配吃鸡电脑的例子说清楚建造者模式
文章目录 一.背景 二.实现 三.总结 设计模式一: <用一个营销策略的实例说清楚策略模式的应用场景> 设计模式二: <用一个股票买卖的例子说清楚观察者模式> 设计模式三: & ...
- CPU值满resmgr:cpu quantum造成的Oracle等待事件解决办法
cpu quantum造成的Oracle等待事件解决办法 不少接触数据库的朋友有一个困扰已久的问题--resmgr:cpu quantum.已经遇过不少次这种CPU突然全绿的情况,通过隐含参数屏蔽了一 ...
- 吃自助餐怎么样一个顺序吃法才合算?
除了合算,也得吃得健康,今天介绍健康合算的吃法顺序: 首先别一上来就大开吃戒. 开始吃自助餐时,不要一上来就大吃,而应该先取一小碗清淡的汤或粥,或者吃些清淡的蔬菜水果开胃,再慢慢吃点主食,最后再吃鱼禽 ...
最新文章
- 程序设计作业: 车模+数模 = ?
- PyTorch:Faster-RCNN
- oracle如何不让表自动建分区,怎么自动创建表空间和表分区
- js-array自增长方式
- Oracle 列类型说明
- leapmotion和HTC和投影视角注意事项
- er图 navicat_用Navicat制作ER图及与SQL互相转化
- 《嵌入式 – GD32开发实战指南》第10章 串口通信
- 基于matlab的微分例题,matlab程序设计常微分方程编程例题答案数学.doc
- 嘿,飞哥(F.R.E.C.O)!不一般的云联盟
- 金蝶EAS BOS开发固定报表流程
- dialog出现Uncaught RangeError: Maximum call stack size exceeded错误
- 如何使用python-docx第三方库,操作读写doc Word文档,快速制作数据报表
- 小米手机、华为手机、一加手机、小米手环NFC刷门禁卡教程!
- less和more的区别
- 杰奇不支持mysql8,【教程】杰奇小说手机端安装使用说明
- echarts的圆饼图自定义颜色
- IMU的ROS调试开发工具包:imu_tools
- 【教育】世界上最伟大的25个教育法则
- php 获取新浪股票行情数据,python 抓取新浪财经股票数据