![](https://img-blog.csdnimg.cn/50315c74b08c4c6981f8fd390429c6e3.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux高并发服务器开发
文章平均质量分 88
系统地实现 Linux下 高并发 服务器开发
Monkey Ji
凡事先独立思考,再去做!!
展开
-
IO多路复用 select、poll 和epoll [Linux高并发服务器开发]
IO多路复用技术 又名 IO多路转接。 IO多路复用使得 程序能同时监听多个文件描述符,只处理输入、输出有变化的套接字,能够提高程序从处理并发的性能。 系统调用主要有select、 poll 和 epoll。原创 2022-03-01 18:59:22 · 1051 阅读 · 0 评论 -
Linux 进程间通信 之 共享内存 [Linux高并发服务器开发]
一、共享内存的概念共享内存允许两个或者多个进程共享物理内存的同一块区域(通常称为段)。 由于一个共享内存段会称为一个进程用户空间的一部分。 因此这种IPC机制无需内核介入,所需要做的是让一个进程将数据复制进共享内存中,并且这部分数据会对其他所有共享同一个段的进程可用。与管道等要求发送进程将数据从用户空间的缓冲区复制进内核内存和接收进程将数据从内核内存复制进用户空间的缓冲区的做法相比,这种 IPC 技术的速度更快。原创 2022-02-22 11:31:23 · 499 阅读 · 1 评论 -
Linux 进程间通信 之 内存映射 [Linux高并发服务器开发]
内存映射 (Memory-mapped I/O)是将磁盘文件的数据映射到内存,用户通过修改内存从而修改磁盘文件。 对内存直接操作,因此效率比较高。内存映射相关的系统调用://建立内存映射void *mmap(void* addr, size_t length, int port, int flags , int fd, off_t offset);//解除内存映射int munmap(void *addr, size_t length);原创 2022-01-21 00:50:32 · 1370 阅读 · 0 评论 -
Linux中使用 有名管道 实现聊天功能 [Linux高并发服务器开发]
使用两个有名管道,进行双向聊天的交互。 对进程A,主进程以只写的方式去向管道1中写数据,创建进程A的子进程,以只读的方式从管道2中读数据; 对进程B,主进程以只读的方式去读管道1中的数据,创建进程B的子进程,以只写的方式向管道2中写数据, 这样就是实现了,两个进程之间,聊天的功能。原创 2022-01-12 12:44:56 · 649 阅读 · 0 评论 -
Linux进程间通信 之 管道通信 及 代码示例 [Linux高并发服务器开发]
进程是一个独立的资源分配单元,不同进程(通常指用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源。 但是进程不是孤立的,不同的进程之间需要进行信息的交互和状态的传递等,因此需要进程间通信。原创 2022-01-09 16:01:41 · 2996 阅读 · 0 评论 -
调用 wait、waitpid 函数进行子进程回收,防止产生僵尸进程 [Linux高并发服务器开发]
父进程可以通过调用wait 或 waitpid得到子进程的退出状态,同时彻底清除掉子进程的资源。原创 2022-01-05 23:56:32 · 1696 阅读 · 0 评论 -
Linux中的进程控制:进程退出、孤儿进程、僵尸进程 概念及代码示例 [Linux高并发服务器开发]
父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就 称为 孤儿进程。进程终止时,父进程尚未回收子进程PCB资源,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。原创 2021-12-29 00:18:01 · 562 阅读 · 1 评论 -
Linux中 进程创建 相关的execve函数调用[Linux高并发服务器开发]
exec函数族是与创建进程相关,都是通过封装Linux系统函数execve来实现的。exec函数族的作用是 根据指定的文件名找到可执行文件,并用它来取代调用进程的内容。原创 2021-12-27 23:07:53 · 1240 阅读 · 0 评论 -
Linux中的 进程概念、进程创建 和 GDB多进程调试 [Linux高并发服务器开发]
进程是正在运行的程序的实例,是一个具有一定独立功能的程序关于某个数据结合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。原创 2021-12-26 16:05:26 · 1062 阅读 · 0 评论 -
Linux中的文件IO和虚拟地址空间模型 [Linux高并发服务器开发]
Linux文件IO 与 虚拟地址空间的概念原创 2021-12-23 22:18:51 · 1345 阅读 · 0 评论 -
Makefile 运行机制 和 语法
一、make的运行最简单的就是直接在命令行下输入 make 命令, make 命令会找当前目录的makefile 来执行,一切都是自动的。但也有时你也许只想让 make 重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。38.make的退出码make 命令执行后有三个退出码:0 —— 表示成功执行。1 —— 如果 make 运行时出现任何错误,其返回 1。2 —— 如果你使用了 make 的“-q”选项,并且原创 2021-11-21 17:52:30 · 3574 阅读 · 0 评论 -
GDB调试 [Linux高并发服务器开发]
目录一、什么是GDB二、GDB调试的必要条件三、GDB命令1.启动和 退出GDB调试工具2.给程序设置参数/获取设置参数3.GDB 使用帮助4.查看 当前文件的源代码5.查看非当前文件代码6.设置显示的代码行数7.设置断点8.查看所有的断点9.删除断点10.设置断点无效11.设置断点生效12.设置条件断点(一般用在循环的位置)13.运行GDB程序14.继续运行,到下一个断点停15.向下执行一行代码( 不会进入函数体,逐语句执行)..原创 2021-11-21 17:47:07 · 943 阅读 · 0 评论 -
Linux中动态库的制作 和 使用[Linux高并发服务器开发]
兄弟 篇:Linux中静态库的制作 和 使用动态库的工作原理是:程序启动之后,动态库会被加载到内存中供程序使用。 动态库的代码不会被打包到可执行程序中。一、命名规则在Linux中:libxxx.solib:前缀 ,是固定的xxx:库的名字,自己起名.so:后缀,是固定的在windows中:libxxx.dll二、动态库的制作2.1 动态库的制作流程,如图:2.2分两个步骤:1.获取目标文件,使用 gcc...原创 2021-11-19 00:30:52 · 600 阅读 · 0 评论 -
Linux中静态库的制作 和 使用 [Linux高并发服务器开发]
一、什么是库库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用者一些可以直接拿来用的变量、函数或类。库是 特殊的一种程序,编写库的程序和编写一般的可执行程序区别不大,只是 库不能单独运行。库文件有两种,静态库 和 动态库(共享库),区别是:静态库 在程序的链接阶段 被 复制到了程序中;动态库 在链接阶段 没有被复制到程序中,而是 程序 在运行时由系统动态加载到内存中供程序调用。...原创 2021-11-18 01:02:28 · 919 阅读 · 0 评论 -
gcc/g++的工作流程 [ Linux高并发服务器开发 ]
一、gcc/g++ 工作的流程windows下的可执行文件是.exe,Linux下的可执行文件是.out二、gcc/g++ 常用参数选项三、使用方式如下:使用下面的 一段 测试代码, 文件名 叫 test.cpp :#include<iostream>#define PI 3.1415926using namespace std;int main(){ int sum = PI + 10 ; cout<<"Hello"&l.原创 2021-11-16 23:53:27 · 1787 阅读 · 0 评论