logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux Socket UDP编程(一):手写UDP回显服务器与客户端,从socket、bind、recvfrom到网络字典服务器完整实战

应用层传输层网络层数据链路层物理层同时也知道,网络通信需要使用 IP 地址和端口号等信息定位通信端点。服务器IP:192.168.1.10服务器Port:8888如何编写一个 Linux 程序,让另一台计算机可以向它发送消息,并接收服务器返回的结果?Linux 提供了 Socket 编程接口。通过这些接口,应用程序可以使用操作系统已经实现的网络协议栈,而不需要自己编写完整的 IP 和 UDP 协议

文章图片
#服务器#网络#linux
Linux进程信号(二):深入理解信号阻塞、未决、sigaction、中断机制、可重入函数与SIGCHLD

在上一篇《Linux进程信号(一)》中,我们已经学习了 Linux 信号的基本概念与常见产生方式。可以向指定进程发送SIGINT。可以主动产生信号。alarm(1);可以请求操作系统在定时器到期后产生SIGALRM。信号是怎样产生的?如果信号产生后没有立即得到处理,它会保存在什么地方?什么叫信号未决(Pending)?信号阻塞(Block)和忽略(Ignore)有什么区别?操作系统怎样决定什么时候

文章图片
#linux#运维#服务器 +1
Linux进程信号(一):从Ctrl+C到kill、raise、alarm,深入理解信号的概念与产生原理

fork()wait()waitpid()execvp()进程间通信:匿名管道、命名管道、共享内存等通过这些知识,我们已经可以创建进程、控制程序执行,并让多个进程进行数据交换。如果一个进程正在执行某项工作,操作系统或者其他进程希望通知它发生了某个事件,该怎么办?Ctrl+C结束程序。为什么按下Ctrl+C就能够终止进程?Ctrl+C与操作系统内核之间是什么关系?如果进程正在执行其他代码,是否必须立

文章图片
#linux#c语言#状态模式 +1
Linux进程间通信(二):深入理解System V共享内存、消息队列、信号量与内核IPC资源管理

pipe()mkfifo()还通过匿名管道实现了简单进程池。我们已经知道,两个进程可以借助内核管道交换数据。进程A写入管道v内核管道缓冲区v进程B读取管道这种设计简单、实用,但是还有一些问题。如果两个进程需要频繁交换大量数据,是否有更直接的通信方式?如果我们希望区分不同类型的消息,该怎么办?如果多个进程同时访问同一份数据,怎样避免发生冲突?进程退出后,操作系统是否会自动清除全部 IPC 资源?内核

文章图片
#linux#状态模式#运维 +2
Linux库的底层原理:ELF文件格式、静态链接、程序加载、虚拟地址空间与GOT/PLT详解

在上一篇文章中,我们已经掌握了静态库和动态库的制作与使用。完成链接。但是,如果只掌握这些命令,我们还不能真正理解链接器和操作系统到底完成了什么。为什么分别编译的两个.o文件能够调用彼此的函数?链接器如何知道某个函数的机器指令位于哪里?为什么.o.so和可执行文件都可以采用 ELF 格式?程序尚未运行时,为什么 ELF 文件中已经存在虚拟地址?操作系统执行execve()时,究竟怎样把 ELF 文件

文章图片
#linux#状态模式#运维 +1
Linux文件系统万字详解:从磁盘CHS/LBA寻址到Ext2块组、inode、路径解析、挂载与软硬链接

在上一篇 Linux 基础 IO 中,我们已经学习了文件描述符fdopen()read()write()close()和重定向。操作系统会找到对应的文件,并且返回一个文件描述符。读取文件内容。操作系统为什么能够根据文件名找到文件?文件内容存储在磁盘的什么位置?文件的权限、大小、时间等属性保存在哪里?为什么文件描述符和 inode 不是一回事?为什么 Linux 可以将多个磁盘分区统一组织在根目录下

文章图片
#linux#学习#服务器 +1
Linux基础IO万字详解:从文件描述符fd到重定向、FILE缓冲机制及MiniShell升级

在前面的 Linux 进程控制学习中,我们已经通过 、 和实现了一个简易 Shell。目前,我们的 MiniShell 已经能够完成:例如:但是,如果尝试执行:我们之前的程序就无法正确处理。真正的 Shell 会将写入 ,而不是显示在终端上。这便引出了一个重要问题:程序默认向显示器输出数据,操作系统究竟怎样把这些数据转移到文件中?要回答这个问题,我们首先需要理解 Linux 文件 IO 的底层机制

文章图片
#linux#状态模式#运维 +1
Linux进程控制详解:从fork、进程退出、waitpid到exec程序替换与简易Shell实现

进程是程序的一次执行实例。Linux 使用描述和管理进程。每个进程都有自己的 PID、地址空间和执行上下文。操作系统通过调度器决定进程什么时候运行。进程可能处于运行、睡眠、停止和僵尸等状态。进程是谁创建出来的?执行完以后又由谁负责回收?如果一个进程想运行另外一个程序,应该怎么办?ls -lShell 会运行ls程序,等待执行结果,再重新显示命令提示符。Shell进程| fork()v创建子进程|

文章图片
#linux#状态模式#运维 +1
Linux进程基础(一):从操作系统管理到PCB、fork、进程状态、僵尸与孤儿进程

fork();getpid();getppid();一堆Linux命令几个系统调用操作系统如何管理正在运行的程序?冯诺依曼体系↓计算机硬件↓操作系统管理硬件↓操作系统管理程序↓描述进程↓↓组织进程↓调度、切换、创建、退出用户↓应用程序↓C/C++库↓系统调用接口↓│ 操作系统内核 │↓ ↓ ↓CPU 内存 外设也就是常见定义:进程是程序的一次执行实例。或者:进程是正在执行的程序。这两个说法都可以帮

文章图片
#linux#状态模式#运维 +1
C++ STL详解 红黑树(一):从基本性质到高度证明与插入调整

在学习红黑树之前,我们首先需要知道它到底解决了什么问题。4/ \2 6/ \ / \1 3 5 7log₂NO(logN)但是普通二叉搜索树并不会主动维护自己的结构。12345O(N)O(N)所以我们需要一种能够自动控制高度的二叉搜索树。AVL 树是一种解决方法,而红黑树则是另一种非常经典的解决方案。红黑树并不像 AVL 树那样严格要求左右子树高度差不超过 1,而是通过一些颜色规则间接约束树的高度

文章图片
#c++#开发语言#学习
    共 67 条
  • 1
  • 2
  • 3
  • 7
  • 请选择