
C/C++
文章平均质量分 74
C/C++
Dontla
这个作者很懒,什么都没留下…
展开
-
C++设计模式总结
根据具体需求灵活选用,切勿过度设计!原创 2025-03-08 23:07:35 · 849 阅读 · 0 评论 -
程序语言的内存管理:垃圾回收GC(Java)、手动管理(C语言)与所有权机制(Rust)(手动内存管理、手动管理内存)
垃圾回收(Garbage Collection,GC)是一种自动内存管理技术。它的核心思想是在程序运行时,由垃圾回收器自动监控内存的使用情况,识别不再被引用的对象,并回收其占用的内存空间。// 错误:重复释放int* ptr;// 未分配内存free(ptr);// 错误:ptr未初始化。原创 2024-10-22 23:47:14 · 1485 阅读 · 0 评论 -
计算机系统中断机制介绍(中断机制提高了系统的响应能力和资源利用率,是实现多任务和实时控制的基础)(中断服务程序ISR、中断向量表IVT、中断控制器IC、中断延迟IL)(硬件中断与软件中断)计算机中断
中断(Interrupt)是一种计算机系统用于处理异步事件的机制。通过中断,外部设备或内部事件可以打断处理器当前的执行任务,转而执行相应的中断服务程序(ISR),以快速响应和处理紧急事件。中断机制提高了系统的响应能力和资源利用率,是实现多任务和实时控制的基础。中断机制作为现代计算机系统的重要组成部分,极大地提升了系统的响应能力和资源利用效率。通过合理的中断类型分类、中断优先级管理和高效的中断服务例程设计,能够实现高效的事件驱动系统。原创 2024-10-19 21:38:59 · 1457 阅读 · 0 评论 -
Rust引用与C++取地址、引用的区别(C++引用、Rust解引用、C++指针)
通过上述示例和解释,我们可以看到两种语言在内存管理、引用和取地址方面的不同哲学和实现方式。在程序设计语言的世界里,Rust和C++都是非常强大的工具,尤其在系统级编程中。本文将深入探讨Rust中的引用与C++中取地址和引用的不同之处,并通过示例展示它们的具体用法。C++允许程序员通过指针直接操作内存,这带来了极高的灵活性但也引入了许多潜在的风险,如野指针、内存泄漏等。Rust通过编译时的借用检查来保证引用的使用是安全的,而C++则依赖程序员手动确保指针的正确使用。)的引入为内存管理提供了更安全的工具。原创 2024-10-16 17:40:38 · 839 阅读 · 0 评论 -
rust不允许在全局区定义普通变量!(Rust全局区)
Rust 采取了更为保守的策略,限制了全局变量的使用,以促进更安全、更可维护的代码编写。Rust 通常不允许在全局作用域中直接定义普通变量,这是为了减少错误和提高代码质量。这些变量在程序的整个生命周期内都存在,从程序开始执行时被初始化,到程序结束时被销毁。通过限制全局变量的使用,并要求在修改全局状态时采用显式的安全措施(如。代码块),Rust 力求减少常见的编程错误,如数据竞争和不确定的初始化顺序,这些在 C++ 中可能更难以控制。块中进行,这强调了潜在的风险和需要程序员显式处理的不安全操作。原创 2024-10-15 17:47:48 · 908 阅读 · 0 评论 -
变量声明和变量定义的区别(声明与定义区别、定义与声明区别、声明定义区别、定义声明区别)
变量定义不仅声明了变量,还为它分配了内存空间。定义的存在意味着编译器在这一点将分配存储空间(如分配内存地址)。每个变量只能定义一次,但可以在其他地方声明多次。int x;// 声明并定义了变量 x。原创 2024-10-15 15:45:38 · 912 阅读 · 0 评论 -
python内存管理与C++内存管理的区别与最佳实践(自动内存管理)(__enter__、__exit__)
虽然Python没有像unique_ptr那样的智能指针来管理内存,但其内置的垃圾回收机制和上下文管理器功能提供了一种高级且安全的方式来管理资源和内存。这反映了Python设计的高级抽象和易用性,以及它在资源管理上的自动化策略。如果你需要在Python中实现类似unique_ptr的功能,通常是通过结构化编程和合理使用上下文管理器来完成的。原创 2024-09-25 14:30:54 · 1509 阅读 · 0 评论 -
C++设备RS485控制程序波特率打印错乱,9600被打印成2580(9600十六进制0x2580)(std::cout << std::hex将std::cout的输出格式设置为16进制)IO操纵符
问题已解决:原因为std::cout原创 2024-09-05 15:11:52 · 1105 阅读 · 0 评论 -
C++IO操纵符(流操纵符、IO操作符、IO操纵符、I/O操纵符)(#include <iomanip>)改变流输出状态、流输出格式、打印格式、std::cout(以不同进制输出、对齐和填充)
在 C++ 编程中,输入输出操作是基本而重要的组成部分,涉及到数据的显示格式化以及用户交互的实现。C++ 通过一系列标准库中的 I/O 操纵符提供了强大的流控制能力,使得开发者可以精细地控制数据的输入输出格式。本文将深入探讨这些操纵符的种类、使用方法以及背后的工作原理。I/O 操纵符是一种用于修改输入输出流(如std::cinstd::cout)属性的工具。这些操纵符通过改变流的状态来影响后续的输入输出操作,例如改变输出的进制、对齐方式、精度等。原创 2024-09-05 15:09:53 · 1340 阅读 · 0 评论 -
C++ unique_ptr(智能指针,独占所有权)
在现代 C++(C++11 及以后版本)中,智能指针是管理动态分配内存的首选方式。unique_ptr是一种智能指针,它提供了对单一对象的独占所有权语义,确保无其他智能指针同时拥有同一原始指针。这种特性使得unique_ptr成为资源管理中保证资源释放和避免内存泄漏的强大工具。在某些情况下,可能需要对资源进行特殊的清理操作,unique_ptr支持自定义删除器,以满足这种需求。unique_ptr。原创 2024-09-03 15:59:27 · 1150 阅读 · 0 评论 -
C++枚举类(强类型枚举、强枚举)(枚举类与switch语句)
枚举类型(Enumerations)在C++中是一种用户定义的类型,它允许开发者为程序定义一个变量,这个变量限定在一组预定义的值之中。从C++11开始,C++引入了一种新的枚举类型,称为“枚举类”(或“强类型枚举”),它提供了更强的类型安全和更好的命名空间隔离。在使用现代C++进行项目开发时,适当使用枚举类不仅可以提高代码质量,还可以促进团队内部代码风格的一致性,降低维护成本。通过在枚举类的声明中指定类型,可以定义枚举值存储的底层类型。可以明确指定枚举类的底层类型,控制枚举类型的大小和性能。原创 2024-09-02 17:33:29 · 1133 阅读 · 0 评论 -
C++ noexcept关键字(用于指明函数是否会抛出异常。可以帮助编译器优化代码、提升性能,同时使函数设计意图更明确)
通过条件性的noexcept,C++ 程序员可以编写出更安全、更高效且易于维护的代码。这种技术利用了 C++ 强大的类型系统和模板特性,使得异常规格能够灵活地适应程序的具体需求。对于设计高质量库和API的开发者来说,理解并正确应用条件性noexcept是非常重要的。在决定是否将接口设计为noexcept时,要仔细考虑上述因素。正确地使用noexcept可以使你的代码更安全、更高效,同时提供更明确的合约。然而,滥用noexcept或在不恰当的情况下使用它可能会隐藏错误,导致更复杂的问题。原创 2024-09-02 11:11:04 · 1284 阅读 · 0 评论 -
C++面向对象单例模式禁止拷贝、禁止赋值操作(=delete)
总的来说,这种做法是对单例设计模式的一个强化,确保了类的全局控制和资源管理的安全性。对象赋值给另一个现有的对象。这是一种常见的做法,特别是在设计单例模式的类时。这行代码意味着你不能使用拷贝构造函数来创建一个。这些语句的作用是禁止拷贝和赋值操作对。这行代码阻止了将一个。原创 2024-08-13 16:04:47 · 939 阅读 · 1 评论 -
c-periphery RS485串口库文档serial.md(serial.h)(非阻塞读)(VMIN、VTIME)
是两个非常重要的设置,它们控制了阻塞读取(blocking read)行为,尤其是在使用 termios(在 UNIX 和类 UNIX 系统中控制终端 I/O 特性的编程接口)配置串口时。流控制可以是软件实现的,也可以是硬件实现的,用于控制发送设备和接收设备之间的数据流,防止接收方的缓冲区溢出。这与阻塞读取(blocking read)形成对比,后者会在没有足够的数据可读时使调用线程暂停执行,直到有足够的数据可读或达到某个特定的条件(如超时或特定数量的数据已经可用)。设置定义了等待数据时的计时器。原创 2024-07-24 15:26:26 · 1789 阅读 · 0 评论 -
C++三种预定义标准流对象:std::cout标准输出、std::cerr标准错误输出、std::clog日志输出;(std::cerr非缓冲,输出立即显示)std::flush、std::endl
C++ 中的这三种标准流对象提供了与用户或其他系统交互的灵活和标准化方式。合理使用这些工具可以提高程序的健壮性、用户体验和维护性。理解和掌握这些流对象的特性和适用场景,是每个 C++ 程序员技能提升的重要一环。原创 2024-07-22 15:15:58 · 1323 阅读 · 0 评论 -
编译报错:visibility.h:30:10: fatal error: event2/event-config.h: No such file or directory(要包含编译后生成的头文件)
是 libevent 编译过程中生成的一个配置头文件,它包含了对系统特定环境的配置,例如可用的系统调用、编译器特性、库版本等。这些信息对于 libevent 的正确编译和运行是必要的,因为它根据这些配置来调整其行为,以适应不同的系统环境。这就是为什么需要在项目中引入这个文件。如果没有正确地引用这个头文件,编译器会缺少必要的环境配置信息,从而导致编译失败。原来这个文件是编译后才生成的!原创 2024-07-22 11:53:07 · 885 阅读 · 0 评论 -
C语言编译报错:error: expected declaration or statement at end of input(缺了括号)
编译器提示“expected declaration or statement at end of input”,这通常意味着编译器在文件的末尾遇到了一些意外的内容,或者是在某个地方缺少了必要的代码元素(如闭合的括号、分号等)。:确保所有的函数、条件语句、循环等都正确闭合了它们的大括号。:如果可能,查看更详细的编译器输出或错误日志,这可能会提供更多线索。:仔细检查涉及的代码行和周围的代码,看看是否有明显的语法错误。确保函数从开始到结束的所有代码块都是完整和正确的。函数的开始和结束,确保它们匹配并完整。原创 2024-07-17 11:27:26 · 1742 阅读 · 0 评论 -
C/C++ Socket套接字设置接收超时方法(设置非阻塞、超时时间)(fcntl、select、setsockopt)
setsockopt函数用于设置指定的Socket选项。sockfd是要设置的Socket的文件描述符;level指定选项所在的协议层;optname是需要设置的选项的名称;optval指向包含新选项值的缓冲区;optlen是optval缓冲区的大小。使用setsockopt函数设置选项是一种直接且有效的方法来设置Socket接收超时。这种方法的优点是简单直观,只需要一行代码就可以完成设置。然而,它的缺点是灵活性较差,因为它只能设置一个固定的超时时间,而不能动态地根据网络状况调整超时时间。原创 2024-01-18 09:00:00 · 4981 阅读 · 0 评论 -
YASM介绍(Yet Another Assembler)(开源模块化可移植的x86汇编器,旨在提供与NASM兼容的功能,并提供一些新的特性)注意:YASM支持x86和AMD64架构,不支持ARM
YASM(Yet Another Assembler)是一个完全重写的 NASM(Netwide Assembler)兼容的开源汇编器。其设计目标是提供最佳的汇编和链接支持,为现代开发人员提供最新的汇编技术。这篇文章将解析 YASM 的主要特性、安装过程、使用方法以及在项目中的应用。原创 2023-12-06 15:27:44 · 1686 阅读 · 0 评论 -
Android JNI(Java Native Interface)技术(与NDK(Native Development Kit)配合使用)Java与C++交互,Java调用C++接口
JNI(Java Native Interface)是Java平台的一部分,它允许Java代码和其他语言编写的代码进行交互。这意味着我们可以在Java环境中调用C、C++或者汇编语言等编写的函数,反之亦然。总的来说,JNI是一个强大的工具,它让我们可以在Java代码和其他语言之间建立桥梁。然而,使用JNI也需要注意一些问题,例如字符串操作、异常处理等。原创 2023-11-08 14:32:10 · 342 阅读 · 0 评论 -
Android 安卓 Soong构建系统——Blueprint Android.bp配置文件解析
Android.bp 是 Android 的构建系统 Soong 使用的脚本语言,用于描述如何构建源代码。Android.bp是Blueprint配置文件的一种特殊形式,专门用于定义Android源代码树中的构建目标。因此,Google决定开发一个新的构建系统——Soong,它使用Go语言编写,专门针对Android项目进行了优化。Android.bp提供了一种灵活的方式来配置构建参数,支持各种不同类型的构建目标,如二进制文件、库文件、测试用例等。例如,如果你正在构建一个C/C++的可执行文件,应该使用。原创 2023-11-07 13:29:40 · 1079 阅读 · 0 评论 -
如何查看.dll文件函数接口?(DLL动态链接库)(查看动态链接库、查看接口、查看函数)(Visual Studio的dumpbin工具)(Dependency Walker)
打开"开始"菜单,找到"Visual Studio"文件夹(版本可能会有所不同,例如"Visual Studio 2019"),然后选择"Developer Command Prompt for VS 2019"。如果你遇到问题或者错误消息,请确保你的Visual Studio安装包含了C++工作负载,并且你有适当的访问权限来读取目标DLL文件。以上方法只能查看到DLL文件的函数名,并不能直接查看到函数的实现内容。可使用Visual Studio的dumpbin工具,你需要先打开VS的命令提示符。原创 2023-10-10 18:05:10 · 17010 阅读 · 0 评论 -
C++QT教程3——手册4.11.1自带教程(笔记)——创建一个基于Qt Widget的应用程序
按下Ctrl+A(或Cmd+A)选择小部件,点击水平布局(或在Linux或Windows上按Ctrl+H,或在macOS上按Ctrl+Shift+H)应用水平布局(QHBoxLayout)。对于on_findButton_clicked()槽函数,添加代码提取搜索字符串,并使用QTextEdit::find()函数在文本文件中查找该字符串。添加代码使用QFile加载文本文件,用QTextStream读取,并使用QTextEdit::setPlainText()在textEdit中显示它。原创 2023-08-13 22:56:27 · 1158 阅读 · 0 评论 -
C++QT教程3——手册4.11.1自带教程(笔记)——创建一个QT快速应用
Qt Creator生成两个UI文件,Page1Form.ui.qml和Page2Form.ui.qml,以及一个QML文件,main.qml。可以在表单编辑器中修改Page1Form.ui.qml以创建应用程序的主视图,并在文本编辑器中修改main.qml以添加应用程序逻辑。将 Qt 标志的位置绑定到矩形,以确保在不同大小的屏幕上缩放视图时,标志显示在矩形内部。要检查的代码,可以在文本编辑器中查看Page1Form.ui.qml文件,并将其与Page1Form.ui.qml示例文件进行比较。原创 2023-08-13 22:02:35 · 889 阅读 · 0 评论 -
C++QT教程2——创建QT项目
默认的基类有QMainWindow、QWidget以及QDialog三个,我们可以选择QWidget(类似于空窗口),这里我们可以先创建一个不带UI的界面,继续下一步。选择【choose】进行下一步。是Qt的整个后台管理的命脉,它包含主事件循环,在其中来自窗口系统和其它资源的所有事件处理和调度。系统会默认给我们添加main.cpp、mywidget.cpp、 mywidget.h和一个.pro项目文件,点击完成,即可创建出一个Qt桌面程序。在此对话框中选择要添加的类或者文件,根据向导完成文件的添加。原创 2023-08-06 23:51:40 · 1428 阅读 · 0 评论 -
C++QT教程1——QT概述(下载与安装、操作界面一览)
Qt是一种跨平台的应用程序开发框架,最初由挪威的Trolltech公司开发,现在由Digia公司维护。Qt提供了一套丰富的工具和类库,用于开发图形用户界面(GUI)应用程序、网络应用程序和嵌入式应用程序。跨平台性:Qt可以在多个操作系统上运行,包括Windows、macOS、Linux、Android和iOS等。高度可定制性:Qt提供了丰富的可定制选项,使开发者能够根据自己的需求进行定制和扩展。强大的图形用户界面:Qt提供了一套强大的工具和类库,用于创建现代化和吸引人的图形用户界面。原创 2023-08-06 23:47:09 · 1024 阅读 · 0 评论 -
linux文件锁(保证只能同时启动一个实例,不同时启动多个实例)
在上述示例代码中,当程序正常退出时,会显式地解锁并关闭文件描述符,这是为了确保文件锁被正确释放。但是,如果程序异常退出(例如由于信号中断或崩溃),操作系统会自动关闭文件描述符,并释放文件锁。命令可以对文件进行加锁,如果加锁成功,则表示程序是第一个实例,可以继续执行。如果加锁失败,则表示已经有一个实例在运行,程序会输出提示信息并退出。如果加锁失败,则表示已经有一个实例在运行,程序会输出提示信息并退出。这是因为文件锁是与文件描述符关联的,当文件描述符关闭时,文件锁也会被释放。一种常见的方法是使用。原创 2023-07-17 13:35:50 · 1293 阅读 · 0 评论 -
C++跨平台开发,如何解决代码复用问题
为了避免这种情况,我们可以将相同的代码抽象出来,放到一个公共的基类中,然后在不同平台的子类中只实现不同的部分。需要注意的是,为了避免FileImpl类中的函数被外部调用,我们将FileImpl类的访问权限设置为了private,这样只有子类可以访问FileImpl类中的函数。好的,下面是一个可以运行的示例代码,其中包含了Windows平台和Linux平台的实现:(这个代码有点问题,应该包含头文件时,就应该判断是哪个平台。这样,我们就可以在不同平台上使用统一的接口来进行文件读写操作,同时也实现了代码的重用。原创 2023-06-30 23:24:13 · 272 阅读 · 0 评论 -
【黑马程序员 C++教程从0到1入门编程】【笔记14】STL- 常用算法
/beg1 源容器开始迭代器//end1 源容器结束迭代器//beg2 目标容器开始迭代器//_func 函数或者函数对象find//查找元素find_if//按条件查找元素//查找相邻重复元素//二分查找法count//统计元素个数count_if//按条件统计元素个数// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置// beg 开始迭代器// end 结束迭代器// _Pred 函数或者谓词(返回bool类型的仿函数)原创 2023-06-29 23:56:38 · 532 阅读 · 0 评论 -
C++编译build/libevent/lib目录下的pkgconfig目录(里面有后缀.pc文件)以及外层目录后缀.la文件是做什么用的?(pkg-config命令)libtool库文件描述文件
需要注意的是,使用.la文件来管理库的链接和安装是libtool的一种方式,但并不是所有的构建系统都使用.la文件。如图,我编译C++ libevent生成的lib目录下,有一个pkgconfig目录,里面有一堆后缀为.pc的目录,外层还有一堆后缀为.la的目录,不知道是干嘛用的。总结起来,通过使用.la文件,可以链接库、查看库的依赖关系,并修改库的安装路径。通过使用pkg-config工具,开发人员可以方便地获取库的信息,并将其用于构建应用程序,从而简化了库的使用和配置过程。选项指定要链接的库的名称,原创 2023-06-25 22:21:00 · 693 阅读 · 0 评论 -
docker交叉编译工具链
简化配置:使用Docker容器可以将编译所需的依赖和工具打包到一个镜像中,这样可以简化配置过程。只需要在需要进行交叉编译的机器上安装Docker,并使用预先构建好的镜像即可开始编译。可移植性:Docker容器可以在不同的操作系统和平台上运行,因此可以在任何支持Docker的机器上进行交叉编译。环境隔离:Docker容器提供了一个独立的运行环境,可以隔离不同的开发环境和依赖。一致性:使用Docker容器可以确保每次编译都在相同的环境中进行,避免了由于不同开发环境导致的编译结果不一致的问题。原创 2023-06-24 21:59:32 · 1435 阅读 · 0 评论 -
C++transform()函数用法(将某操作应用于指定范围的每个元素)
C++中有两个函数可进行快速变换大小写,tolower()函数是把字符串都转化为小写字母;touppre()函数是把字符串都转化为大写字母。以上就是函数的用法。转载 2023-06-20 00:04:49 · 402 阅读 · 0 评论 -
【黑马程序员 C++教程从0到1入门编程】【笔记13】 STL函数对象(仿函数)(谓词:一元谓词、二元谓词)(内建函数对象<functional>:算数仿函数、关系仿函数、逻辑仿函数)匿名函数对象
/ 1.一元谓词 struct GreaterFive {} };i < 10;i ++) {cout原创 2023-06-19 23:29:06 · 92 阅读 · 0 评论 -
【黑马程序员 C++教程从0到1入门编程】【笔记12】 STL标准模板库 set容器multiset容器、map容器multimap容器、pair对组(仿函数)
功能描述:创建set容器以及赋值set st;//默认构造函数://拷贝构造函数//重载等号操作符set容器插入数据时用insertset容器插入数据时,数据会自动排序(默认由小到大)统计大小 — size判断是否为空 — empty交换容器 — swap插入 — insert删除 — erase清空 — clear查找 — find (返回的是迭代器)统计 — count (对于set,结果为0或者1)原创 2023-06-15 00:56:40 · 263 阅读 · 0 评论 -
C++std::map的多种插入键值对(对组)pair方式(std::map::insert)
【代码】C++std::map的多种插入键值对(对组)pair方式(std::map::insert)原创 2023-06-15 00:32:16 · 4805 阅读 · 0 评论 -
C++set容器,自定义排序方法(使用仿函数(Functor)或者普通函数指针)
在使用STL中的set容器时,如果需要自定义排序规则,可以使用仿函数(Functor)或者普通函数指针。使用普通函数指针时,需要定义一个比较函数,该函数接受两个参数,返回一个bool类型的值,表示两个参数的大小关系。在创建set容器时,将比较函数的函数指针作为第二个参数传递给set,从而实现按照自定义规则进行排序。int age;在上面的代码中,AgeLess是一个比较函数,它接受两个参数s1和s2,返回一个bool类型的值,表示s1和s2的大小关系。原创 2023-06-13 23:48:45 · 7012 阅读 · 4 评论 -
【黑马程序员 C++教程从0到1入门编程】【笔记11】 STL标准模板库(Standard Template Library)STL常用容器——stack容器、queue容器、list容器
入栈 — push出栈 — pop返回栈顶 — top判断栈是否为空 — empty返回栈大小 — size入队 — push出队 — pop返回队头元素 — front返回队尾元素 — back判断队是否为空 — empty返回队列大小 — sizeList和vector是两个最常被使用的容器给list容器进行赋值,以及交换list容器对list容器的大小进行操作判断是否为空 — empty。原创 2023-06-13 15:32:19 · 172 阅读 · 0 评论 -
【黑马程序员 C++教程从0到1入门编程】【笔记4-2】C++核心编程(类和对象——运算符重载)(左操作数、右操作数)(仿函数)
C++中的运算符重载是一种特性,允许重新定义已存在的运算符的行为,以适应自定义类型的操作。通过运算符重载,可以为用户定义的类创建自定义的运算符行为,使其与内置类型的操作一样自然和直观。p=122看了视频教程才看明白,作用:可以输出自定义数据类型。原创 2023-06-11 23:57:46 · 646 阅读 · 0 评论 -
C++运算符重载,前置自增(前置++)和后置自增(后置++)代码分析
返回递增之前的对象值:后置递增运算符需要在递增之前返回原始对象的值,以满足后置递增的语义。通过不同的返回值类型,前置递增和后置递增运算符的重载函数可以提供一致且符合预期的行为,与内置类型的递增操作保持一致,并允许连续的前置递增操作。这样的差异设计使得前置递增和后置递增的使用方式与内置类型的递增操作保持一致,同时也符合了C++中运算符重载的惯例。这是因为前置递增运算符用于直接对对象进行递增操作,并返回递增后的对象的引用。而在后置递增运算符(x++)的重载中,返回值的类型通常是对象类型(对象的副本),例如。原创 2023-06-10 22:14:08 · 4941 阅读 · 5 评论 -
C++ unix域套接字(Unix domain socket)客户端服务端代码示例demo、抽象套接字(Abstract Socket)
抽象套接字是Unix域套接字的扩展,引入了一种特殊的命名约定,用于创建不依赖于文件系统路径的套接字。文件路径冲突:Unix域套接字使用文件系统中的特殊文件进行通信,因此需要选择一个合适的文件路径来创建套接字。适当设置文件权限可以提高安全性。因此,可以说抽象套接字是Unix域套接字的一种变体或特殊情况,它们共享相同的通信机制和特性,但在套接字的命名和可见性方面有所区别。总之,Unix域套接字利用文件系统的特殊文件作为通信的载体,在内核层实现进程间的通信,提供了高效、可靠且安全的进程间通信机制。原创 2023-06-08 23:32:25 · 2657 阅读 · 0 评论