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)只影响数据,不影响属性

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 05:04:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 05:04:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 05:04:04       45 阅读
  4. Python语言-面向对象

    2024-07-22 05:04:04       55 阅读

热门阅读

  1. 实习手计(4):月末碎碎念!

    2024-07-22 05:04:04       12 阅读
  2. Nginx详细配置(最佳实践)

    2024-07-22 05:04:04       16 阅读
  3. 信息系统安全保护等级调整的流程

    2024-07-22 05:04:04       15 阅读
  4. Netty SSL/TLS

    2024-07-22 05:04:04       19 阅读
  5. C语言排序算法

    2024-07-22 05:04:04       12 阅读
  6. 如何使用Python进行数据分析

    2024-07-22 05:04:04       17 阅读
  7. filebeat把日志文件上传到Es中配置(ES8版本)

    2024-07-22 05:04:04       13 阅读
  8. 使用 node --inspect 命令调试js文件执行

    2024-07-22 05:04:04       15 阅读
  9. c语言(7.21)

    2024-07-22 05:04:04       15 阅读
  10. redis的分片集群(仅供自己参考)

    2024-07-22 05:04:04       16 阅读
  11. Log4J reminder

    2024-07-22 05:04:04       14 阅读
  12. 探索未知:无监督目标检测的前沿之旅

    2024-07-22 05:04:04       18 阅读
  13. conda:导出与创建环境快照

    2024-07-22 05:04:04       19 阅读