自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 Linux 网络编程:使用Socket套接字实现IPC进程间通讯

Socket IPC结合了网络编程的灵活性和本地通信的高效性,是Linux系统编程中的重要工具。通过本文的学习,你不仅掌握了Socket IPC的实现方法,还了解了各种IPC方式的适用场景。在实际项目中,根据具体需求选择合适的IPC方式,往往能达到事半功倍的效果。关注我,持续更新 Linux/C++/网络编程干货!

2025-12-11 16:19:23 898

原创 Linux 网络编程:深入浅出UDP协议Socket编程规范

1. 编程流程对比TCP 服务端socket() bind() listen() accept() ← 创建连接 recv()/send() close()UDP 服务端2. 客户端对比UDP编程相比TCP显得更加“自由”和“原始”。它剥离了繁重的连接管理,还原了网络通信最本质的数据投递功能。作为C++开发者,掌握UDP不仅仅是学会几个API,更是理解可靠性与效率之间权衡的艺术。希望这篇博客能成为你学习路上的“知识锚点”。

2025-12-08 20:37:38 835

原创 Linux 网络编程:TCP协议Socket开发全流程,理解多线程多进程实现的多连接网络通讯模型

从单连接到多连接,我们完成了 TCP 服务器的一次关键进化。多进程与多线程模型虽“古老”,却是理解现代异步 I/O(如 epoll、IOCP)的前提。只有亲手写过 fork 和 pthread,才能真正体会到“并发”的代价与魅力。原创不易,转载请注明出处。

2025-12-07 13:32:42 1078

原创 Linux 网络编程:深度理解网络字节序与主机字节序、大端字节序与小端字节序

1.1什么是字节序在网络编程中,特别是在跨平台和网络通信时,字节序(Byte Order)是非常重要的概念。字节序指的是多字节数据在内存中的存储顺序。对于单字节数据(如char),不需要考虑字节序。但是对于多字节数据(如intshort),不同架构的 CPU 在内存中存放它们的顺序是不同的。高位字节放在前面还是后面?这就好比我们写日期:中国人习惯:年-月-日(2023-12-20)→高位在前美国人习惯:月-日-年(12-20-2023)→低位在前1.2 大端字节序主机字节序其本质是。

2025-12-04 16:19:04 755

原创 Linux网络编程:Socket套接字编程概念及常用API接口介绍

套接字(Socket)是计算机网络数据通信的基本概念和编程接口,允许不同主机上的进程(运行中的程序)通过网络进行数据交换。它为应用层软件提供了发送和接收数据的能力,使得开发者可以在不用深入了解底层网络细节的情况下进行网络编程。在学习计算机网络的过程中,我们知道 socket 就是IP 地址 + 主机端口号 + 对应协议,而在 Linux 网络编程中,Socket 是一个文件描述符,它允许你的进程在网络上收发数据,就像读写普通文件一样。在 Linux 中一切皆文件,因此 socket 返回的本质是一个。

2025-12-03 16:55:45 1042

原创 C Linux系统编程:线程同步详解,锁与信号量解析

pthread_cond_t 是一个条件变量,它是线程间同步的另一种机制。与pthread_mutex_t相同,它也定义在头文件<pthreadtypes.h>中,其声明如下。条件变量允许线程挂起执行并释放已持有的互斥锁,等待某个条件变为真。条件变量总是需要与互斥锁一起使用,以避免出现竞态条件。由荷兰科学家 Dijkstra 提出,是一种计数器 + 等待队列的同步机制,用于控制对有限资源的访问。类比:停车场有 N 个车位,每辆车进入减1,离开加1。它不仅仅用于互斥,更核心的思想是。

2025-11-04 16:32:59 1253

原创 C Linux系统编程:线程控制详解,从线程创建到线程终止

线程(Thread)是操作系统能够进行运算调度的最小单位,与进程相比更加轻量。它被包含在进程之中,是进程中的实际运作单位。一个进程可以包含多个线程,这些线程共享进程的地址空间、文件描述符、信号处理等内存空间,但各自拥有独立的栈空间和寄存器状态。是给那些“不需要等待、不需要结果”的线程使用的,让它执行完后自动“消失”,避免僵尸线程。掌握线程的创建、控制与生命周期管理是 Linux 系统编程的基石。通过本文的梳理,相信你对pthread系列 API 有了更系统的理解。

2025-09-05 15:06:27 991

原创 C Linux系统编程:进程通讯完全指南,管道通讯、共享内存以及消息队列

进程间通信 (Inter-Process Communication, IPC)是指在不同进程之间传播或交换信息的一系列技术和方法。每个进程都拥有自己独立的虚拟地址空间,一个进程无法直接访问另一个进程的数据或者进行通讯,为了实现协同工作,操作系统必须提供专门的机制来促成这种通信,这就是IPC的意义所在。管道 (Pipe)命名管道 (FIFO)信号 (Signal)消息队列 (Message Queue)共享内存 (Shared Memory)信号量 (Semaphore)

2025-09-01 20:45:44 1158

原创 C Linux系统编程:解析基本的进程创建、控制与进程状态,详解system,execve、waitpid函数

在开始介绍基本的函数之前,首先需要理解什么是"进程"。可以把一个进程想象成一个正在执行的程序。Linux学习篇10——Linux 进程管理深度解析:进程基础、常用指令、服务管理与系统监控-优快云博客程序是静态的,是存储在磁盘上的可执行文件;而进程是动态的,是程序被加载到内存中并执行的一个实例。参数pathname:要执行的可执行文件的完整路径(如/bin/ls参数argv:传递给新程序的参数列表(argv[0]通常是程序名本身),必须以NULL结尾。参数envp:环境变量列表,必须以NULL结尾。

2025-08-23 16:10:43 1302

原创 C Linux系统编程:详解常见的系统调用函数,文件I/O核心:open, close, read, write

系统调用是操作系统提供给用户程序的一组接口,用于请求内核服务(如文件操作、进程控制、内存管理等)。我们通常使用<unistd.h>和<fcntl.h>等头文件来调用这些函数。通过学习和实践openclosereadwrite这四个基础系统调用,我们掌握了在Linux下进行文件I/O操作的核心能力。它们是构建更复杂文件操作、管道、套接字通信等的基石。理解文件描述符的概念、牢记检查返回值、正确处理部分I/O和错误情况、合理使用标志位(如O_APPEND)、管理好文件描述符资源,是编写健壮系统程序的关键。

2025-08-20 11:10:40 1287

原创 C Linux系统编程:深度解析文件描述符,从概念到内核

我们都知道在 Linux 的世界里,一切皆文件,就包括我们所使用的鼠标、键盘以及硬盘都是以文件的形式存在与根目录下,那么我们所打开的文件是如何被记录的呢,那便是文件描述符。文件描述符(fd)是一个非负整数,用来标识一个进程打开的文件或 I/O 资源。下面介绍一下标准 FD文件描述符名称C 语言宏定义默认来源用途0标准输入键盘程序读取输入数据1标准输出终端屏幕程序输出正常结果2标准错误终端屏幕程序输出错误和诊断信息光有 fd 还不够,操作系统需要知道这个数字到底对应哪个“打开的文件”。

2025-08-18 12:32:01 1284

原创 C/C++ 进阶:深入解析 GCC:从源码到可执行程序的魔法四步曲

GCC的全称是:GNU Compiler Collection (GNU 编译器套件),它的主要作用是将高级语言(C, C++, Objective-C, Fortran, Ada, Go 等)编写的源码翻译为计算机底层能够理解与执行的机器码。或者是转换为更为底层的语言,如汇编语言。GCC 支持多种操作系统(Linux、Windows、macOS等),同时它并不只是简单的编译器, 更多是一个驱动程序。它本身并不完成所有编译工作,而是根据你给的源代码类型(.c.cpp等)和参数,智能地调用后台真正的。

2025-08-14 22:28:03 1337

原创 Linux学习篇12——Shell编程入门与Shell编程基本语法详解大全、学习Shell基础看这篇就够了(常用变量类型、Shell运算符、流程控制、函数)

在 Linux 系统中,Shell 是用户与系统内核之间交互的桥梁,用于接受用户所给出的指令,并将其解释为内核能够理解的指令,最终完成相关的操作并返回结果给用户,平时所使用的 ls、cd等指令,也都是通过 Shell 来执行的。而Shell 编程,则是将一系列的 Shell 指令按照一定的语法规则组织到一个文件中,形成可执行性的脚本文件(其拓展名一般都以 .sh 结尾)。通过运行这个脚本文件,系统会按顺序执行其中的命令,从而实现自动化的任务处理。在Shell编程中,变量定义的基本格式为变量名=值,

2025-07-29 22:47:33 1617

原创 Linux学习篇11——Linux软件包管理利器:RPM与YUM详解与实战指南,包含如何配置失效的YUM镜像地址

简单来说就是已经将软件的二进制文件、配置文件、手册页等 "打包" 好的文件,方便在Linux系统中进行安装、卸载、管理等。一开始我以为是类似于Windows系统的软件安装包或者是压缩文件,但其实并不是,就是一个软件,而是类似于Windows的 .exe 文件,被整合成一个package的形式。软件包的格式有所差异,如 RedHat 系用 rpm,Debian 系用 deb,但是整体使用 rpm 为多,本篇也以 rpm 进行介绍。

2025-07-27 16:25:30 1263

原创 Linux学习篇10——Linux 进程管理深度解析:进程基础、常用指令、服务管理与系统监控

服务是指的我们在电脑前台看不到的进程,也就是在后台持续运行,为系统或者其他程序提供特定功能的程序,其不在前台运行,一般不会被用户直接观察看到,所以不带有用户界面。服务一般又可以理解为守护进程,其实就是实现服务功能的哪个进程本身。Web服务器(Apache/Nginx)、数据库(MySQL/PostgreSQL)、SSH服务器(sshd)、防火墙(firewalld/iptables)等。传统 SysVinit 系统:依赖service和chkconfig指令(如 CentOS 6、早期 Ubuntu)

2025-07-26 00:32:00 1501

原创 Linux学习篇9——Linux的NAT网络配置、DHCP自动分配IP地址解析、主机名与hosts映射

本文系统介绍了Linux网络配置的核心内容:1. NAT模式原理,解释了虚拟机通过NAT网关实现外网访问的地址转换过程及其特点;2. IP地址分配策略,对比分析了DHCP自动分配和手动配置静态IP的使用场景及配置方法;3. 常用网络命令,包括ifconfig、ip、ping等工具的使用;4. hosts主机映射机制,说明如何通过/etc/hosts文件建立域名与IP的本地映射关系。文章提供了虚拟机网络配置的实用指导,帮助读者掌握Linux网络管理的基础知识与操作技能。

2025-07-22 14:36:29 1535

原创 Linux学习篇8——深度理解磁盘分区、挂载、格式化,从理论到实战一篇搞定!

将分区上的磁盘在文件系统的中的空间“链接”到Linux目录树中的某个空目录(挂载点)的过程。这个目录成为访问该文件系统内容的入口。注意点!!建议是一个已存在的空目录。挂载后,访问挂载点目录(及其子目录)的操作,实际上访问的是被挂载文件系统的根目录内容。原挂载点目录本身的内容被“隐藏”(卸载后恢复可见)。也就是说挂载后其原有内容会被“隐藏”,访问该目录看到的将是被挂载文件系统的内容。原目录的内容不会被删除或移动到新磁盘,它们只是被暂时“覆盖”和“屏蔽”,直到卸载后才会重新可见。

2025-07-21 13:50:02 1011

原创 Linux学习篇7——解析并理解Linux系统任务调度指令crontab与at总结

crond 服务是 Linux 系统中用于周期性执行任务的守护进程,它是 crontab 命令能够正常工作的基础。atd 服务是 Linux 系统中用于处理 at 命令所设置的一次性任务的守护进程,它负责监听和执行 at 任务队列中的任务。at 命令用于在指定时间执行一次性任务。它根据用户指定的时间,将输入的命令放入队列,由 atd 守护进程执行。at 支持复杂的时间格式,包括相对时间、绝对时间、模糊语言等,这为用户灵活安排任务执行时间提供了便利。

2025-07-19 12:13:38 1139

原创 Linux学习篇6——深入解析用户、组、文件目录之间的权限管理与控制,从理论到实践

例如,755表示文件所有者具有读(4)、写(2)、执行(1)权限(4 + 2 + 1 = 7),所属组用户和其他用户具有读(4)和执行(1)权限(4 + 1 = 5)。使用u(所有者)、g(所属组)、o(其他用户)、a(所有用户)来指定权限修改的对象,通过+(添加权限)、-(移除权限)、=(设置权限)操作符来修改权限。,这里的权限管理是指管控用户对于指定文件目录的权限,这里可以是文件、目录、字符设备文件如鼠标、键盘等以及块设备文件如硬盘。将每种用户的权限数字相加得到一个三位数,用于设置文件或目录的权限。

2025-07-18 12:36:42 1042

原创 Linux学习篇5——详细解读并掌握Linux系统中的文件、目录压缩、解压缩指令

之前在前一篇博客介绍过了基本文件目录的相关指令,而这一篇文章则继续介绍与文件目录相关的指令压缩与解压缩指令。在学习与使用Linux操作系统中不免会接触到文件目录的的操作,Linux 提供了多种压缩工具,例如gzipgunzipzipunzip,以及最常用的打包工具tar。虽然它们的功能看起来相似,但每种工具都有其特定的用途和适用场景。本文将从基础语法入手,帮助你理解为何 Linux 需要这些不同的压缩与解压缩指令,并掌握它们的基本使用方法。

2025-07-17 11:42:48 1179

原创 Linux学习篇4——Linux文件目录基础指令详解,一篇解释解释文件目录创建、删除、复制、查看等指令操作

在虚拟机中或者是安全情况下尝试每一条指令的使用,并熟悉环境。

2025-07-15 21:28:40 2346

原创 Linux学习篇3——一文搞懂Linux运行级别(Runlevel)的核心知识与实战命令+如何找回root管理员密码

什么是运行级别:Linux运行级别(Runlevel)是,定义了哪些系统服务和资源是可用的。可以理解为不同的系统运行级别,电脑所处不同的模式,每个模式都有每个模式的不同,基本按照等级递增,系统可用资源增加。运行级别的存在目的是什么:控制(如网络、图形界面、多用户登录等),实现不同场景的用户所需要的需求(如正常使用、单用户维护、关机等)。

2025-07-11 21:30:37 1558

原创 Linux学习篇2——Linux的用户与用户组管理(包含用户的添加、删除、注销以及用户组等概念等)

一组用户的集合。用于简化权限分配(将权限赋予组,组内用户自动获得权限)。所以可以理解,在同一个组内的用户拥有相同的系统权限。

2025-07-09 23:22:19 1079

原创 Linux学习篇1——Linux的文件目录结构(Linux系统与Windows系统结构设计思想对比)

Linux系统文件目录总览可参考下图:如果将Linux文件目录结构比做成一个图书馆,以下文件夹可以按照如下解释。根目录,是文件系统的起点,是所有文件目录的父目录,是整棵树的根,所以为根目录。也就像是图书馆的大门,通向所有其他目录。/bin:存放所有用户可用的基础用户命令,例如lscpmvrmcatbash等命令存放于此。就像图书馆基础服务台。/sbin:存放系统管理命令,通常需要root管理员权限才能进入,例如fdisk(分区),ifconfig(网络配置),reboot(重启),

2025-07-08 21:59:22 999

原创 基于VMware虚拟机CentOS7发行版本的Linux安装VMware tools工具(Linux已配置GNOME桌面界面)

1. VMwareTools 安装后,可以让我们可以在宿主主机更好管理我们的虚拟机、实现共享文件夹以及数据文件互通。2.自动调节虚拟机窗口大小,桌面图形性能增强,提升显示与操作流畅度、提升系统使用体验。2.安装VMware Tools工具教程详解。

2025-07-04 11:09:46 2468 6

原创 VMware虚拟机上安装Linux操作系统详细教程(以CentOS7为例,包括下载CentOS镜像,安装Linux)

点击自定义硬件。配置内存大小2GB,这里的处理器内核数量可以根据自己的处理器的内核数量来选择性安排。通过Ctrl+Alt+Del键打开任务管理器,点击性能,我们就可以看到我们CPU的内核的数量配置处理器数量,我选择每个处理器使用2个内核分配给虚拟机剩下的内核数量自然是给母机使用。

2025-07-01 21:22:35 2739 1

原创 VMware Workstation Pro17(Windows系统)安装教程

自定义安装地址,默认安装在C盘,当然可以更改安装地址,我这里选择下载到自己的存放我各类工具的D盘,同时需要创建一个新的文件夹方便管理,勾选"将控制台工具添加到系统PATH",点击下一步。

2025-07-01 14:49:48 1452 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除