C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > c++ reactor高并发服务器

c++实现reactor高并发服务器的详细教程

作者:__Zed

这篇文章主要介绍了c++从零实现reactor高并发服务器,包括环境准备和基础知识介绍,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

环境准备

基础知识

静态库动态库

**静态动态库都有 优先使用动态

makefile

每次编译都要g++ xxxx很麻烦,果然懒惰是第一生产力

highlighter- livecodeserver

# 指定编译的目标文件是生成这俩库
all:libxxx.a \
    libxxx.so
# 编译libxxx.a时,如果发现后面这俩文件变化了 重新编译
libxxx.a: main.h main.cpp
	g++ -c -o libxxx.a main.cpp+
# 同上
libxxx.so: main.h main.cpp
	g++ -fPIC -shared -o libxxx.so main.cpp
# make clean命令
clean:
		rm -f libxxx.a libxxx.so

gdb调试

指令用处其他说明
set args xx xx设置参数
break/b 20在第20行打断点ctrl+g 或 :set number
run/r从头一直运行直到断点
next/n执行当前语句若为函数调用不进入
step/s执行当前语句进入(库函数由于无源码进不去)
continue/c运行到下一个断点
print/p xx查看变量/表达式的值甚至可以p strlen(xx) p xx = 1
set var xx = xx调试时设置参数
quit/q退出gdb

linux

时间 <time.h>

tm结构体

从time_t转tm结构体,注意加_r 线程安全
localtime_r(&now, &tmnow)

gettimeofday(struct timeinterval* tv, struct timezone* tz) 获取1970/1/1到现在的秒数+当前的微秒数

目录操作<unistd.h>

<dirent.h> 读取目录相当于ls -a

highlighter- cpp

DIR* opendir(const char* path); //打开目录
struct dirent*readdir(DIR* dirp); //读取目录
int closedir(DIR* dirp);        //关闭目录

stat结构体,有很多成员,比ls列出的还多
int stat(const char*path, struct stat*buf)

Linux系统错误 <errno.h>

linux信号

可以用默认的信号操作(通常会终止进程) 也可以用signal函数自定义处理方式,但是有的信号不可被捕获、忽略 如9

sighandler_t signal(int signum, sighandler_t func)void (*sighandler_t)(int);

进程终止

终止的状态就是main中 return 几

参考资料

到此这篇关于c++从零实现reactor高并发服务器的文章就介绍到这了,更多相关c++ reactor高并发服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文