1、基础设施之配置文件读取
使用配置文件,是我们的服务器程序有了极大的灵活性,
是我们作为服务器程序开发者,必须要首先搞定的问题。
配置文件:文本文件,里边除了注释行之外不要用中文,
只在配置文件中使用字母,数字,下划线。
#开头的行作为注释行。
我们这个框架,第一个要解决的问题是读取配置文件中的配置项(读到内存中来)
1.1、前提内容和修改
1.2、配置文件读取功能实战代码
写代码要多顾忌别人感受,让别人更容易读懂和理解,不要特意炫技。
该缩进的缩进,该对齐的对齐,该注释的注释。这些切忌。
2、内存泄露的检查工具
valgrind:帮助程序员寻找程序里的bug和改进性能的工具集。
擅长发现内存的管理问题。
里边有若干工具,其中最重要的是Memcheck(内存检查)工具。
用于检查内存泄露。
sudo apt-get install valgrind 安装
valgrind -h 查看帮助
valgring --version 查看邦本
2.1、memcheck的基本功能
a、使用未初始化的内存
b、使用已经释放了的内存
c、使用超过malloc()分配的内存
d、申请的内存是否有释放
e、对堆栈的非法访问
f、malloc/free, new/delete申请和释放内存的匹配
g、memcpy()内存拷贝函数中源指针和目标指针重叠
2.2、内存泄露检查示范(要输出调试信息-g,发布版本例外)
所有应该是放的内存都要释放掉。
Valgrind --tool=memcheck 一些开关 可执行文件名
Valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./nginx
--tool=memcheck 使用工具集中memcheck工具 常用
--leak-check=full 值得是完全full检查内存泄露 常用
--show-reachable=yes 是显示内存泄露的地点 常用
--trace-children=yes 是否跟入子进程
--log-file=log.txt 调试信息输出到log.txt,不输出到屏幕
差值是1就没泄露,和源代码有关的提示。
【LEAX SUMMARY】 为0表示没有
3、设置可执行程序的标题(进程名)
3.1、原理和实现思路分析
命令行参数就是ps后CMD字段的显示结果。各个参数的内存是连续的。
后面是环境变量参数信息内存,也是紧挨着argv内存后面。
可以通过一个全局的environ[char **]就可以访问。
思路:重新在堆中分配一块内存,保存环境environ中额内容,
修改argv[0]指向的内存,则是修改进程名字。
计算环境变量+命令行参数所占总内存,修改argv[0]指向的内容,
其余内存清0;
3.2、设置可执行程序的标题实战代码
网友评论