<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[荒坡_KingRumn]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/KnownAll</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; KnownAll]]></copyright><item><title><![CDATA[DBUS源码剖析之DBusMessage消息生命周期管理]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156654325</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156654325</guid><author>KnownAll</author><pubDate>Wed, 07 Jan 2026 08:30:00 +0800</pubDate><description><![CDATA[D-Bus消息生命周期管理采用引用计数和锁定机制确保消息一致性。消息生命周期包括创建、填充、锁定、发送、接收和释放阶段。锁定机制通过dbus_message_lock()实现，防止传输中被修改。引用计数使用原子操作管理内存，dbus_message_ref()增加计数，dbus_message_unref()减少计数并在归零时释放。消息复制通过dbus_message_copy()实现，复制所有内容用于多目标发送或异步处理。自动清理宏dbus_clear_message()可避免内存泄漏。]]></description><category></category></item><item><title><![CDATA[DBUS源码剖析之DBusMessage消息序列化和反序列化]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156612523</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156612523</guid><author>KnownAll</author><pubDate>Tue, 06 Jan 2026 07:30:00 +0800</pubDate><description><![CDATA[D-Bus消息序列化与反序列化机制摘要： D-Bus使用二进制格式进行消息传输，通过序列化(marshaling)将DBusMessage转换为网络字节流，反序列化(demarshaling)则从字节流重建消息。序列化采用零拷贝设计，支持字节序对齐和紧凑二进制格式，通过dbus_message_marshal()函数实现。反序列化使用DBusMessageLoader解析器，验证消息完整性后重建消息结构。关键特性包括消息锁定确保一致性、高效数据复制和所有权转移。]]></description><category></category></item><item><title><![CDATA[DBUS源码剖析之DBusMessage消息迭代器（DBusMessageIter）]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156571694</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156571694</guid><author>KnownAll</author><pubDate>Mon, 05 Jan 2026 07:15:00 +0800</pubDate><description><![CDATA[DBusMessageIter 是 D-Bus 消息参数处理的迭代器，支持读取和追加两种模式。它采用栈分配设计，可以安全复制，主要用于遍历消息参数、添加参数和处理复杂容器类型（数组、结构体等）。迭代器结构隐藏了实现细节以保持 ABI 兼容性，内部包含读取器或写入器。初始化分为读取模式（dbus_message_iter_init）和追加模式（dbus_message_iter_init_append）。]]></description><category></category></item><item><title><![CDATA[DBUS源码剖析之DBusMessage消息参数处理]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156464068</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156464068</guid><author>KnownAll</author><pubDate>Sun, 04 Jan 2026 08:30:00 +0800</pubDate><description><![CDATA[摘要 D-Bus消息参数处理主要通过两种方式：便捷函数（dbus_message_append_args/dbus_message_get_args）和迭代器（DBusMessageIter）。便捷函数适用于简单场景，支持基本类型参数、数组和Unix文件描述符的处理。添加参数时需要传递类型-值对，并以DBUS_TYPE_INVALID结束。对于数组参数，需特别注意指针传递方式；文件描述符传递则通过Unix域套接字实现，函数内部会自动复制fd。复杂类型处理需使用迭代器，便捷函数存在对复杂类型支持有限的问题。]]></description><category></category></item><item><title><![CDATA[DBUS源码剖析之DBusMessage消息头]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156463832</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156463832</guid><author>KnownAll</author><pubDate>Sat, 03 Jan 2026 08:00:00 +0800</pubDate><description><![CDATA[D-Bus消息头（DBusHeader）是D-Bus消息的元数据部分，包含路由信息、消息类型和标志等关键数据。它由16字节固定部分和可变长度字段数组组成，采用网络字节流格式。固定部分包含字节序、消息类型、标志、协议版本、消息体长度、序列号和字段数组长度。字段数组则存储路径、接口、成员等路由信息，每个字段以变体类型编码并8字节对齐。消息头支持延迟解析和缓存优化，与消息体分开存储，便于网络传输和处理。这种设计实现了高效的路由、类型识别和请求-回复匹配功能。]]></description><category></category></item><item><title><![CDATA[DBUS源码剖析之DBusMessage消息类型及创建]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156463437</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156463437</guid><author>KnownAll</author><pubDate>Fri, 02 Jan 2026 07:30:00 +0800</pubDate><description><![CDATA[本文介绍了D-Bus消息系统中的4种基本消息类型及其用途，重点分析了 D-Bus定义了4种核心消息类型：方法调用(METHOD_CALL)、方法返回(METHOD_RETURN)、错误(ERROR)和信号(SIGNAL)，每种类型有特定的通信方向和用途。 ]]></description><category></category></item><item><title><![CDATA[DBUS源码剖析之DBusMessage数据结构]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156463024</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156463024</guid><author>KnownAll</author><pubDate>Thu, 01 Jan 2026 07:45:00 +0800</pubDate><description><![CDATA[D-Bus消息(DBusMessage)是D-Bus IPC系统的基本通信单元，包含消息头和消息体两部分。消息类型包括方法调用、方法返回、信号和错误消息。消息生命周期涵盖创建、填充、锁定、序列化、传输、反序列化、使用和释放等阶段。内部数据结构采用引用计数管理生命周期，包含消息头、消息体、锁定标志等字段，支持网络字节流序列化和资源跟踪功能。该设计实现了进程间通信的安全性和可靠性。]]></description><category></category></item><item><title><![CDATA[DBUS源码剖析之内存与内存池]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156429034</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156429034</guid><author>KnownAll</author><pubDate>Wed, 31 Dec 2025 08:00:00 +0800</pubDate><description><![CDATA[D-Bus 实现了一套高效的内存管理机制，主要包括：1) 封装系统 malloc 的内存分配函数，提供调试功能和跨平台一致性；2) 内存池优化技术，减少碎片和提高小对象分配性能。内存分配函数统一处理零字节分配，并支持调试模式下的内存保护。内存池通过块分配和空闲链表管理，优化了频繁的小对象分配场景。这些机制虽然不公开为 API，但显著提升了 D-Bus 的性能和可靠性。]]></description><category></category></item><item><title><![CDATA[DBUS源码剖析之编译器属性扩展]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156429001</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156429001</guid><author>KnownAll</author><pubDate>Tue, 30 Dec 2025 18:36:21 +0800</pubDate><description><![CDATA[D-Bus 源码中广泛使用__attribute__编译器属性来增强代码质量，主要包括： 类型安全检查：通过_DBUS_GNUC_PRINTF验证printf格式字符串 内存管理优化：使用DBUS_MALLOC和DBUS_ALLOC_SIZE标记内存分配函数 错误处理：_DBUS_WARN_UNUSED_RESULT强制检查返回值 代码优化：_DBUS_GNUC_NORETURN标记不返回函数 兼容性处理：通过宏定义在不支持编译器上自动降级 这些属性在dbus-macros.h中统一管理，确保跨平台兼容性。]]></description><category></category></item><item><title><![CDATA[DBUS源码剖析之DBusString数据类型]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156394759</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156394759</guid><author>KnownAll</author><pubDate>Tue, 30 Dec 2025 07:43:16 +0800</pubDate><description><![CDATA[保护机制检查时机作用断言检查每次操作前检查基本约束和内部一致性最大长度限制设置长度时防止超过系统限制整数溢出检查增加长度时防止整数溢出导致的安全问题边界检查访问数据时防止越界访问自动重新分配空间不足时自动扩展，但不超过最大长度返回值检查所有修改操作让调用者知道操作是否成功关键设计原则防御性编程：假设所有输入都可能有问题多层检查：不依赖单一检查机制失败安全：操作失败时返回错误，不破坏数据显式错误处理：通过返回值明确告知调用者对齐维护每次内存重新分配后，调用。]]></description><category></category></item><item><title><![CDATA[DBus源码剖析之项目架构设计]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156393963</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156393963</guid><author>KnownAll</author><pubDate>Mon, 29 Dec 2025 18:20:53 +0800</pubDate><description><![CDATA[D-Bus（Desktop Bus）项目由于发起，旨在为 Linux 桌面环境提供一个统一的进程间通信（IPC）机制。]]></description><category></category></item><item><title><![CDATA[玩转DBus命令行工具之qdbus使用]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156269763</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156269763</guid><author>KnownAll</author><pubDate>Mon, 29 Dec 2025 07:22:32 +0800</pubDate><description><![CDATA[qdbus是 Qt 提供的 D-Bus 命令行工具，功能类似于gdbus，但使用 Qt 的 D-Bus 实现。它提供了便捷的方法调用、属性访问和信号监听功能。]]></description><category></category></item><item><title><![CDATA[玩转DBus命令行工具之gdbus使用]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156269357</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156269357</guid><author>KnownAll</author><pubDate>Sun, 28 Dec 2025 07:47:54 +0800</pubDate><description><![CDATA[gdbus是 GLib 提供的 D-Bus 工具集，功能比dbus-send更强大，支持复杂类型（variant、数组等），自动显示返回值，提供更好的类型处理。]]></description><category></category></item><item><title><![CDATA[玩转DBus命令行工具之dbus-monitor]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156268815</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156268815</guid><author>KnownAll</author><pubDate>Sun, 28 Dec 2025 07:46:28 +0800</pubDate><description><![CDATA[是 D-Bus 的消息监视工具，用于实时查看总线上的所有消息，包括方法调用、方法返回、信号和错误。它是调试 D-Bus 应用程序的重要工具。]]></description><category></category></item><item><title><![CDATA[玩转DBus命令行工具之dbus-send]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156268731</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156268731</guid><author>KnownAll</author><pubDate>Sat, 27 Dec 2025 07:19:00 +0800</pubDate><description><![CDATA[假设有一个服务 com.example.Service，对象路径 /com/example/Object# 接口 com.example.Interface，方法 GetData，参数为字符串。]]></description><category></category></item><item><title><![CDATA[玩转DBus命令行工具之dbus-daemon和dbus-launch的使用]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156268879</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156268879</guid><author>KnownAll</author><pubDate>Sat, 27 Dec 2025 07:17:24 +0800</pubDate><description><![CDATA[的配置文件采用 XML 格式，遵循 D-Bus 配置 DTD。这些本地配置文件会在主配置之后加载，优先级最高。，这些文件会在系统更新时被覆盖。：systemd 环境下常用。，不会生成 PID 文件。]]></description><category></category></item><item><title><![CDATA[Linux进程间通信之玩转DBus命令行工具]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156259223</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156259223</guid><author>KnownAll</author><pubDate>Fri, 26 Dec 2025 07:27:05 +0800</pubDate><description><![CDATA[D-Bus 提供了多个命令行工具，用于在终端中与 D-Bus 总线交互、发送方法调用、监听信号、访问属性等。这些工具对于调试、测试和管理 D-Bus 服务非常有用。]]></description><category></category></item><item><title><![CDATA[Linux进程间通信之D-Bus]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156239664</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156239664</guid><author>KnownAll</author><pubDate>Fri, 26 Dec 2025 07:25:34 +0800</pubDate><description><![CDATA[D-Bus（Desktop Bus）是一种高级的进程间通信机制，主要用于Linux桌面环境和系统服务之间的通信。D-Bus提供了一个消息总线系统，允许应用程序之间进行异步通信，支持方法调用和信号等通信模式。此外，D-Bus还提供了标准化的属性访问机制，通过接口的方法调用来实现对象属性的读取和设置。]]></description><category></category></item><item><title><![CDATA[Linux进程间通信之通信模式]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156198236</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156198236</guid><author>KnownAll</author><pubDate>Thu, 25 Dec 2025 07:41:12 +0800</pubDate><description><![CDATA[单向通信：简单、高效，适合数据流处理双向通信：灵活，适合客户端-服务器模式消息传递：保持消息边界，适合结构化数据方法调用/RPC：类似函数调用，适合服务调用信号/事件通知：异步、低延迟，适合事件驱动属性访问：面向对象，适合配置和状态管理发布/订阅：解耦，适合事件驱动架构共享状态：最高性能，适合大数据量和频繁通信通信方向：单向、双向还是多向同步性：同步还是异步数据量：小、中还是大性能要求：延迟和吞吐量要求复杂度：简单还是复杂场景功能需求：是否需要服务发现、持久化等高级功能。]]></description><category></category></item><item><title><![CDATA[Linux信号之fork安全性]]></title><link>https://blog.youkuaiyun.com/KnownAll/article/details/156157855</link><guid>https://blog.youkuaiyun.com/KnownAll/article/details/156157855</guid><author>KnownAll</author><pubDate>Thu, 25 Dec 2025 07:40:42 +0800</pubDate><description><![CDATA[虽然fork()多线程程序: 可能导致锁状态不一致和死锁正在执行 I/O 操作: 可能导致缓冲区状态不一致正在执行内存操作: 可能导致堆状态不一致推荐做法: 在信号处理函数中只设置标志或使用管道通知主程序, 然后在主程序中安全地调用fork()]]></description><category></category></item></channel></rss>