欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > HighConcurrencyCommFramework c++通讯服务器框架 :目录,修改标题,配置,日志打印

HighConcurrencyCommFramework c++通讯服务器框架 :目录,修改标题,配置,日志打印

2024/10/24 1:50:46 来源:https://blog.csdn.net/wuxiaoyu0806/article/details/140590765  浏览:    关键词:HighConcurrencyCommFramework c++通讯服务器框架 :目录,修改标题,配置,日志打印

目录规划

nginx 根目录下的三个文件

makefile :编译项目的入口,编译项目从这里开始

config.mk:也是个配置脚本用来增加变动的东西,应付可变

common.mk:最核心的编译脚本,每个子目录都要被编译.cpp程序

配置文件

配置文件读取功能实战代码

该缩进的必须缩进,对齐的对齐;

1.读取文件的代码

2.内存泄露的检查

valgrind :工具集:

帮助程序员寻找bug,擅长内存管理的问题memcheck 检测内存;
)memcheck的基本功能,能发现如下的问题;/a)使用未初始化的内存//b)使用已经释放了的内存//c)使用超过malloc()分配的内存//d)对堆栈的非法访问//e)申请的内存是否有释放*//f)malloc/free,new/delete申请和释放内存的匹配//g)memcpy()内存拷贝函数中源指针和目标指针重叠;

检查实例

valgrind --tool=memcheck
--leak-check=full:指的是完全full检测内存泄露
--show-reachable=yes;显示内存泄露的地点
--trace-children=yes :是否跟入子进程
--log-file=log.txt :将调试信息输出到log.txt 不输出到屏幕

 

设置可执行程序的标题

原理和实现的分析

argc :命令行参数的个数

argv:是个数组,每个数组元素都是指向一个字符串的char*,存的是命令行参数

内存连续;

argv 之后紧挨着后面的内存是环境变量内存保存的可执行程序所有环境变量的参数信息;

修改可执行程序的实现思路:

先把环境变量的内存搬走;

搬走了,命令行后面的参数你不用了,才可以增加长度

设置标题,然后,只要一个参数,然后跳过标题让其全部后面的为0;

日志打印 :

查看work mast进程

ps -eo pid,ppid,sid,tty,pgrp,comm,stat,cmd | grep -E 'bash|PID|nginx'

内核写入的write的命令是原语

父子进程共享文件描述符,那么就是子进程写完之后,父进程紧随其后写,因此同时写进一个日志的时候不会混乱;

没有亲缘关系的不共享,可能发生混乱;

write掉电解决:

直接iO ,直接访问物理磁盘O_DRECT 绕过内核,直接到磁盘,512的倍数分配空间

同步选项:

open文件是用 O_SYNC ,将写入的内核缓冲区的数据立即写入到磁盘

每次写数据,必须要大块大块的写数据,一般都4k 4k的写,节省系统调用的次数;

缓存同步:尽量保证缓存数据,和写道磁盘上的数据一致

sync(void)将所有修改过的块缓冲区排入写队列,然后返回,并不等待实际写磁盘操作,数据是否写入磁盘没有保证

fsync(int fd)将fd对应的文件的快缓冲区立即写入磁盘,并等待实际写磁盘操作返回,全部都影响,属性和数据;

fdatasync(int fd)只影响数据,不影响属性

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com