随笔分类 - LINUX
摘要:23.libevent 学习目标 ▶描述什么是libevent并掌握如何安装 ▶掌握event_base的作用和使用方法 ▶熟练掌握libevent库中的事件循环 ▶掌握event事件的使用方法 ▶掌握bufferevent的工作方式 ▶掌握使用libevent实现tcp服务器端流程 ▶掌握使用Li
阅读全文
摘要:22.UDP通信 TCP:传输控制协议,面向连接的,稳定的,可靠的,安全的数据流传递 稳定和可靠: 丢包重传 数据有序: 序号和确认序号 流量控制: 滑动窗口 UDP:用户数据报协议 面向无连接的,不稳定,不可靠,不安全的数据报传递 更像是收发短信 UDP传输不需要建立连接,传输效率更高,在稳定的局
阅读全文
摘要:21.线程池 什么是线程池? 是一个抽象的概念,若干个线程组合到一起,形成线程池。 为什么需要线程池? 多线程版服务器一个客户端就需要创建一个线程!若客户端太多,显然不太合适。 什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁地创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带
阅读全文
摘要:20.TCP连接与断开 学习目标 ▶掌握三次握手建立连接过程 ▶掌握四次握手关闭连接的过程 ▶掌握滑动窗口的概念 ▶掌握错误处理函数封装 ▶实现多进程并发服务器 ▶实现多线程并发服务器 ▶熟练掌握TCP状态转换图 ▶熟练掌握端口复用的方法 ▶了解半关闭的概念和实现方式 ▶了解多路IO转接模型 ▶熟练
阅读全文
摘要:19.网络编程之网络基础概念 学习目标 了解OSI七层、TCP/IP四层模型结构 了解常见网络协议格式 掌握网络字节序和主机字节序之间的转换(大端法和小端法) 说出TCP服务器端通信流程 说出TCP客户端通信流程 独立写出TCP服务器端代码 独立写出TCP客户端代码 1.网络基础概念 1.1协议 概
阅读全文
摘要:2.linux下的目录结构 1.Linux文件系统的特点 ●Linux文件系统采用树形结构,从根目录root(/)开始。 ●Linux的虚拟文件系统允许众多不同类型的文件系统共存,并支持跨文件系统的操作。 ●Linux的文件是无结构字符流式文件,不考虑文件内部的逻辑结构,只把文件简单地看作是一系列字
阅读全文
摘要:3.linux查看当前所在目录 在Linux(以及其他类Unix系统)中,你可以使用pwd命令(代表"print working directory")来查看你当前所在的目录。只需要在命令行中输入pwd,然后按回车键,系统就会显示你当前的工作目录。例如: pwd 执行上述命令后,可能会得到类似这样的
阅读全文
摘要:18.守护进程和线程 学习目标 说出守护进程的特点 独立完成守护进程的创建 独立实现多个线程的创建 独立实现线程的退出和资源回收 理解线程同步的思想 1.守护进程 1.1守护进程介绍 Daemon(精灵)进程,是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生
阅读全文
摘要:17.LINUX中的read函数 1.read函数的函数原型 #include <unistd.h> ssize_t read(int fd,void *buf,size_t count); 函数原型为:ssize_t read(int fd, void *buf, size_t count);其中
阅读全文
摘要:16.Linux中write函数详解 头文件: #include <unistd.h> 函数原型: write(int fd, const void *buf, size_t count); 函数说明:write()会把参数buf所指的内存写入count个字节到参数fd所指的文件内。 返回值:如果顺
阅读全文
摘要:# 15.LINUX命令kill ## 1.kill命令简介 在Linux统中,kill命令用于向运行中的进程发送信号,默认发送的信号是终止信号,会请求进程退出。kill(杀)可能会引起误解,实际上发送的信号可能与杀死进程无关。 **我们最常使用到的kill命令为:** ```shell kill
阅读全文
摘要:# 14.linux命令ps ## 1.ps aux 对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程, 而ps命令(Process Status)就是最基本同时也是非常强大的进程查看命令。 使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪
阅读全文
摘要:13.进程间通信 1.学习目标 熟练使用pipe进行父子进程间通信 熟练使用pipe进行兄弟进程间通信 熟练使用fifo进行无血缘关系的进程间通信 使用mmap进行有血缘关系的进程间通信 使用mmap进行无血缘关系的进程间通信 2.进程间通信相关概念 2.1 什么是进程间通信 Linux环境下,进程
阅读全文
摘要:12.进程控制 1.学习目标 了解进程相关的概念 掌握fork/getpid/getppid函数的使用 熟练掌握ps/kill命令的使用 熟练掌握execl/execlp函数的使用 说出什么是孤儿进程什么是僵尸进程 熟练掌握wait函数的使用 熟练掌握waitpid函数的使用 2.进程相关概念 2.
阅读全文
摘要:11.文件和目录 1.文件操作相关函数 1.1stat/lstat函数 █函数描述: 获取文件属性 █函数原型: int stat(const char *pathname, struct stat *buf);//加了const一定是输入参数,buf是输出参数 int lstat(const ch
阅读全文
摘要:10.文件IO 从本章开始学习各种Linux系统函数,这些函数的用法必须结合Linux内核的工作原理来理解,因为系统函数正是内核提供给应用程序的接口,而要理解内核的工作原理,必须熟练掌握C语言,因为内核也是用C语言写的,我们在描述内核工作原理时必然要用“指针”、“结构体”、“链表”这些名词来组织语言
阅读全文
摘要:9.gdb调试 1.gdb介绍 GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下: GDB主要帮忙你完成下面四个方面的功能: ▶ 启动程序,可以按照你的自定义的要求随心所欲地运行程序。 ▶ 可让被调试的程序在你所指定的断点处停住。(断点可以是条件表达式) ▶ 当程序被停住
阅读全文
摘要:8.makefile 学习目标: 熟练使用规则编写简单的makefile文件 熟练使用makefile中的变量 熟练使用makefile中的函数 1.makefile makefile文件中定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能
阅读全文
摘要:7.静态库和共享(动态)库 7.1库的介绍 什么是库 库是二进制文件,是源代码文件的另一种表现形式,是加了密的源代码; 是一些功能相近或者是相似的函数的集合体。 使用库有什么好处 ▶ 提高代码的可重用性,而且还可以提高程序的健壮性; ▶ 可以减少开发者的代码开发量,缩短开发周期。 库制作完成后,如何
阅读全文
摘要:## 6.1 gcc的工作流程 gcc编译器将c源文件到生成一个可执行程序,中间一共经历了四个步骤:  四个步骤并不是
阅读全文