Linux服务器编程
文章平均质量分 52
ispurs
努力去做,静等结果发生!
展开
-
Linux常用调试工具总结
记录一些常用的linux调试工具1. gdblinux下代码调试工具2. nm$ nm a.out3. addr2line$ addr2line -C -f -e a.out 0x0000000000001149 # 通过地址解析到具体的文件和行号信息, a.out必须带调试信息4. strace # strace - trace system calls and signals $ strace -p [pid] -f -t -i -f 跟踪由fo原创 2022-03-03 16:09:03 · 2542 阅读 · 0 评论 -
Linux 后台开发常用调试工具
01 总览编译阶段nm 获取二进制文件包含的符号信息strings 获取二进制文件包含的字符串常量strip 去除二进制文件包含的符号readelf 显示目标文件详细信息objdump 尽可能反汇编出源代码addr2line 根据地址查找代码行运行阶段gdb 强大的调试工具ldd 显示程序需要使用的动态库和实际使用的动态库strace 跟踪程序当前的系统调用ltrace转载 2021-08-27 21:44:06 · 266 阅读 · 0 评论 -
c++实现线程池
线程池技术是为了避免频繁的创建和销毁线程所带来的开销。线程池是一个典型的生产者-消费者模型,用户将要执行的任务添加到任务队列,并通知线程池,线程池则唤醒其中的一个线程来处理任务。一个简单的c++线程池实现如下所示:#include <iostream>#include <vector>#include <deque>#include <thread>#include <mutex>#include <condition_vari原创 2021-05-22 16:27:50 · 2324 阅读 · 3 评论 -
守护进程(daemon)
守护进程是一种生命周期很长的进程。它在后台长期运行,并且没有控制终端。1. 创建守护进程的步骤step1. 设置权限掩码清除进程的umask,从而确保守护进程有足够的权限来创建文件和目录。umask(0);step2. fork子进程并退出父进程int pid = fork();if (pid > 0) exit(0);有两个原因需要我们这样做。首先,如果daemon进程是通过shell命令启动的,当我们退出父进程时,shell会认为命令已经执行完了,从而使得子进程继续在后台运行;原创 2021-02-21 22:36:10 · 324 阅读 · 0 评论 -
libevent事件通知库学习笔记
libevent是一个基于reactor模式的开源事件通知库,具有高性能、轻量级等优点。本文分享了对libevent 1.4源码的一些理解。1. libevent使用实例——event-testlibevent 1.4源码提供了一些使用实例,本文通过对其中的一个实例,来分析libevent库是如何实现事件通知功能的。以下源码取自sample/event-test.c,为了便于阅读,删除了关于WIN32的代码,去掉了对返回值的错误判断。/* * event-test.c * Compile with原创 2021-02-20 19:26:01 · 303 阅读 · 0 评论 -
Linux系统日志 rsyslogd
Linux系统日志 rsyslogdrsyslogd是linux系统提供的一个守护进程,用来处理系统日志。rsyslogd守护进程既能够接受用户进程输出的日志,也能够接受内核日志。ispurs-virtual-machine:~$ ps aux | grep rsyslogdsyslog 6033 0.0 0.0 256588 3328 ? Ssl 2月18 0:00 /usr/sbin/rsyslogd -n1. syslog函数用户进程可以通过syslog函原创 2021-02-19 00:28:26 · 1408 阅读 · 0 评论