多进程编程 多进程编程包含例如以下内容: 复制进程影映像的fork系统调用和替换进程映像的exec系列系统调用. 僵尸进程以及怎样避免僵尸进程 进程间通信(Inter-Process Communication,IPC)最简单的方式:管道 3种进程间通信方式:信号量,消息队列和共享内存 fork系统调用 #include<unistd.h> pid_tfork(void); 该函数的每次都用都返回两次,在父进程中返回的是子进程的PID,在子进程中返回的是0.该返回值是兴许代码推断当前进程是父进…
多线程编程 Linux主题概述 线程模型 线程是程序中完毕一个独立任务的完整执行序列.即一个可调度的实体. 依据执行环境和调度者的身份.线程可分为内核线程和用户线程.内核线程,在有的系统上也称为LWP(Light Weigth Process.轻量级进程).执行在内核空间,由内核来调度:用户线程执行在用户空间,由线程库来调度.当进程的一个内核线程获得CPU的使用权时.它就载入并执行一个用户线程.可见,内核线程相当于用于线程执行的容器. 一个进程能够拥有M个内核线程和N个用户线程,当中M≤N.而且…
进程池和线程池 池的概念 由于server的硬件资源"充裕".那么提高server性能的一个非常直接的方法就是以空间换时间.即"浪费"server的硬件资源.以换取其执行效率.这就是池的概念. 池是一组资源的集合,这组资源在server启动之初就全然被创建并初始化,这称为静态资源分配. 当server进入正是执行阶段.即開始处理客户请求的时候.假设它须要相关的资源,就能够直接从池中获取,无需动态分配.非常显然,直接从池中取得所需资源比动态分配资源的速度要快得多.由于…
 Linux网络编程基础API 具体介绍了socket地址意义极其API,在介绍数据读写API部分引入一个有关带外数据发送和接收的程序,最后还介绍了其它一些辅助API. socket地址API 主机字节序和网络字节序 字节序分为大端字节序和小端字节序.小端字节序又被称为主机字节序,大端字节序被称为网络字节序.大端字节序是指一个整数的高位字节存储在内存的低地址处,低位字节存储在内存的高地址处.小端字节序则相反. Linux提供例如以下四个函数完毕主机字节序与网络字节序之间的转换: #inclu…
 信号 信号是由用户.系统或者进程发送给目标进程的信息.以通知目标进程某个状态的改变或系统异常. Linux信号可由例如以下条件产生: 对于前台进程.用户能够通过输入特殊的终端字符来给它发送信号.比方输入Ctrl+C一般会给进程发送一个终端信号. 2.系统异常 系统状态变化 执行kill命令或调用kill函数 Linux信号概述 发送信号 Linux下,一个进程给其它进程发送信号的API是kill函数.其定义例如以下: #include <sys/types.h> #include <…
 IO复用 I/O复用使得程序能同一时候监听多个文件描写叙述符.通常网络程序在下列情况下须要使用I/O复用技术: client程序要同一时候处理多个socket client程序要同一时候处理用户输入和网络连接 TCPserver要同一时候处理监听socket和连接socket,这是I/O复用使用最多的场合 server要同一时候处理TCP请求和UDP请求.比方本章将要讨论的会社server server要同一时候监听多个port.或者处理多种服务. I/O复用尽管能同一时候监听多个文件描写…
版权声明:本文为博主原创文章.未经博主允许不得转载. https://blog.csdn.net/walkerkalr/article/details/36869913  定时器 服务器程序通常管理着众多定时事件.因此有效组织这些定时事件,使之能在预期的时间点被触发且不影响服务器的主要逻辑,对于服务器的性能有着至关重要的影响.位置我们要将每一个定时事件封装成定时器.并使用某种容器类型的数据结构,比方链表.排序链表和时间轮将全部定时器串联起来,以实现对定时事件的统一管理. Linux提供三种定…
多线程编程 条件变量 假设说相互排斥锁是用于同步线程对共享数据的訪问的话.那么条件变量则是用于线程之间同步共享数据的值. 条件变量提供了一种线程间的通信机制:当某个共享数据达到某个值得时候,唤醒等待这个共享数据的线程. 条件本身是由相互排斥量保护的.线程在改变条件状态前必须首先锁住相互排斥量,其它现成在获得相互排斥量之前不会察觉到这样的变化,由于必须锁住相互排斥量以后才干计算条件. 条件变量的相关函数主要有例如以下5个: #include <pthread.h> int pthread_con…
重定向dup和dup2函数 #include <unistd.h> int dup(int file_descriptor); int dup2(int file_descriptor_one, int file_descriptor_two); dup创建一个新的文件描写叙述符, 此描写叙述符和原有的file_descriptor指向同样的文件.管道或者网络连接. dup返回的文件描写叙述符总是取系统当前可用的最小整数值. dup2函数通过使用參数file_descriptor_two指定新…
系统检測工具 tcpdump tcpdump是一款经典的抓包工具,tcpdump给使用者提供了大量的选项,泳衣过滤数据报或者定制输出格式. lsof lsof是一个列出当前系统打开的文件描写叙述符的工具. 通过它我们能够了解感兴趣的进程打开了哪些文件描写叙述符.或者我们感兴趣的文件描写叙述符被哪些进程打卡了. nc nc命令主要被用来高速构建网络连接. 我们能够让它以server方式执行.监听某个port并接收客户连接,因此它可用来调试client程序.我们也能够使之以client方式执行,向s…