构造函数:
1,设置文件支持本地字符
2, 定位工作目录到可执行程序所在目录
readlink("/proc/self/exe"...) exe是一个链接文件 readlink读它所链接的位置 exe可以找到当前进程的可执行文件的位置
getcwd() 获取当前路径
chdir() 切换工作目录
3, 如果没有定义调试模式 设置为后台服务 fork() setsid() umask()
4, 加载插件处理模块 dlopen() dlsym()
5, 绑定信号处理程序 struct sigaction sigemptyset() sigaddset() signal()
return :退出当前函数
exit :清理后退出程序
_exit :直接退出程序
开源项目中的成熟框架, 模块, 接口, 类, 代码实现
线程和网络数据收发使用boost库中的技术
内存管理,使用google的开源库 tcmalloc
守护进程创建:
1, fork()
2, setsid()
3, fork()
4, 关闭打开的文件描述符
5, chdir()
6, umask
定义导出接口头文件:
#ifdef JJK_EXPORTS
#ifdef _LINUX
#define API __attribute__((visibility("default")))
#define CLASS __attribute__((visibility("default")))
#elif _WINDOWS
#define API __declspec(dllexport)
#define CLASS __declspec(dllexport)
#else
#error Invalid platform
#endif
#else
#ifdef _LINUX
#define API
#define CLASS
#elif _WINDOWS
#define API __declspec(dllimport)
#define CLASS __declspec(dllimport)
#else
#error Invalid platform
#endif
#endif