- 博客(11)
- 收藏
- 关注
原创 asan的基本使用
detect_leaks:是否启用内存泄漏检测(leakSanitizer 支持),detect_leaks = 1;如果编译执行环境下缺少下面这些工具,请按照这些命令进行安装。abort_on_error: 检测到错误是否立即终止程序。以指定asan 日志路径,输出关与double 为例子。log_path:错误日志输出路径,centos 环境下。ubuntu 环境下。只在当前的用户下有效。
2025-03-31 14:00:57
262
原创 柔性数组的使用
a. 以上面的结构体实例为说明依据, 这个int a [] 就是柔性数组。b. 在代码编译阶段, 使用运算符sizeof(struct st)计算 结构体的类型的大小是 4字节。
2024-12-04 19:17:14
318
原创 网络posix api
不同操作的系统给用户层提供的接口提供了统一的标准,这些接口统称为posix, 例如open函数,在不同的操作系统上回调这些接口时,能保证入参和功能是一致的。说明:发送的数据可能需要累计一定大小,才发送出去,例如发送数据的大小mtu的大小,等待下次的send()后内核缓冲区的填充满,协议栈在发送数据。b.客户端close()之前调用send(), 两者同时组成一个报文发送,服务端怎么感知客户端调用close()?答:客户端调用close(),发送了一个FIN报文,服务端调用recv()后,检测到返回值为0。
2024-07-03 12:45:53
622
原创 reactor
IO多路复用器通常可以采用select ,poll , epoll 去监听事件,根据事件类型(可读,可写)调度事件分离器通知对应的事件处理器去处理IO。该示例中通过while循环中的epoll_wait不断轮询内核缓冲区是否有数据可读, 如果有可读事件发生时,通过事件分离器,也就是代码中提及的两个。
2023-11-20 10:22:55
72
1
原创 IO多路复用
触发的条件为内核缓冲区的数据从无到有,不论内核缓冲区的数据是否被应用层读完, 只触发一次。功能:epoll事件注册函数, 根据op 的不同,执行相应的操作,不如向epoll对象中添加修改或者删除对应的事件。EPOLLLT: 水平触发,如果内核态的数据的没有被读取,就会一直触发可读事件,为epoll 的默认触发方式。功能: 创建一个epoll句柄,size 用来告诉内核监听的数量,实际开发中,默认填写1。EPOLLIN: 表示对应的文件描述符可读(所谓的可读,是内核态的已经准备好数据)。
2023-11-19 17:41:58
72
1
原创 进程的基础
经过编译器编译的可执行二进制文件例如,一个demo.c 文件通过gcc 编译器编译生成一个a.out的可执行文件,该可执行文件就是程序,存放在硬盘上以下就是通过gcc 命令行生成的a.out。
2023-11-15 15:16:42
49
原创 socket编程
主要服务端进程,与客户端进程进行通信。客户端进程和服务端进程可以是在同一台主机上运行,也可以在不同的主机上运行,以下代码是在同一台主机上实现的。
2023-11-04 22:59:28
227
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人