C
文章平均质量分 91
KingRumn
An old boy with peaceful heart but remarkable perseverance!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux进程间通信之D-Bus
D-Bus(Desktop Bus)是一种高级的进程间通信机制,主要用于Linux桌面环境和系统服务之间的通信。D-Bus提供了一个消息总线系统,允许应用程序之间进行异步通信,支持方法调用和信号等通信模式。此外,D-Bus还提供了标准化的属性访问机制,通过接口的方法调用来实现对象属性的读取和设置。原创 2025-12-26 07:25:34 · 543 阅读 · 0 评论 -
Linux进程间通信之通信模式
单向通信:简单、高效,适合数据流处理双向通信:灵活,适合客户端-服务器模式消息传递:保持消息边界,适合结构化数据方法调用/RPC:类似函数调用,适合服务调用信号/事件通知:异步、低延迟,适合事件驱动属性访问:面向对象,适合配置和状态管理发布/订阅:解耦,适合事件驱动架构共享状态:最高性能,适合大数据量和频繁通信通信方向:单向、双向还是多向同步性:同步还是异步数据量:小、中还是大性能要求:延迟和吞吐量要求复杂度:简单还是复杂场景功能需求:是否需要服务发现、持久化等高级功能。原创 2025-12-25 07:41:12 · 754 阅读 · 0 评论 -
Linux信号之fork安全性
虽然fork()多线程程序: 可能导致锁状态不一致和死锁正在执行 I/O 操作: 可能导致缓冲区状态不一致正在执行内存操作: 可能导致堆状态不一致推荐做法: 在信号处理函数中只设置标志或使用管道通知主程序, 然后在主程序中安全地调用fork()原创 2025-12-25 07:40:42 · 779 阅读 · 0 评论 -
Linux信号之标准信号可以用sigqueue排队吗
特性标准信号 (使用 kill)标准信号 (使用 sigqueue)实时信号 (使用 kill/sigqueue)排队能力❌ 不排队⚠️ 有限排队✅ 完全排队相同信号数量只保留 1 个队列中只保留 1 个可以排队多个数据传递❌ 不支持✅ 支持 (siginfo_t)✅ 支持 (siginfo_t)信号丢失✅ 可能丢失⚠️ 可能丢失 (队列满时)❌ 不会丢失 (受资源限制)FIFO 顺序N/A⚠️ 部分支持✅ 完全支持资源限制N/A受 RLIMIT_SIGPENDING。原创 2025-12-24 07:38:24 · 895 阅读 · 0 评论 -
Linux信号之定时器与SIGALRM
SIGALRM是 Linux 系统中专门用于定时器通知的信号. 它由内核定时器机制触发, 用于在指定时间后通知进程.SIGALRM是一个标准信号(信号编号 14), 可以被捕获和处理.原创 2025-12-24 07:37:02 · 1033 阅读 · 0 评论 -
Linux信号之信号安全
信号处理函数必须只调用信号安全函数使用在信号处理函数和主程序之间通信最小化信号处理函数, 只做必要的工作使用管道或 signalfd 将信号转换为 I/O 事件避免在信号处理函数中使用全局状态。原创 2025-12-23 07:47:00 · 1072 阅读 · 0 评论 -
Linux同步机制之信号量
System V信号量是内核提供的同步原语,用于进程间的互斥与资源计数。它通过计数器实现P操作(减1)和V操作(加1),支持阻塞机制和原子操作。主要API包括semget创建信号量集、semop执行PV操作、semctl控制信号量。典型应用包括互斥锁(初值1)和资源池(初值N)。使用时需注意键值管理、初始值设置、资源清理和死锁避免。优点在于强大的同步能力,缺点是API复杂且有系统限制。适用于进程同步、生产者-消费者等场景,但不适合简单通信。原创 2025-12-13 22:26:12 · 783 阅读 · 0 评论 -
Linux进程间通信之内存映射
内存映射(mmap)是一种高效的文件I/O和进程间通信机制,它通过将文件或设备映射到进程地址空间,使进程能像访问普通内存一样访问文件内容。mmap支持文件映射和匿名映射两种方式,前者用于文件操作,后者用于进程间通信。其核心优势包括零拷贝访问、共享内存区域和按需加载机制。系统调用包括mmap()创建映射、munmap()取消映射和msync()同步数据。示例展示了如何使用mmap进行文件读写和多线程/多进程间的安全数据共享,其中多进程通信需要特殊处理互斥锁的进程间共享属性。原创 2025-12-13 21:14:46 · 655 阅读 · 0 评论 -
Linux进程间通信之共享内存与消息队列的竞争问题(同步策略)对比
消息队列与共享内存的竞争问题对比分析 消息队列在内核层面实现了原子操作保护,确保发送、接收和删除操作的并发安全性,但应用层仍需处理逻辑竞争(如消息接收顺序、队列删除竞争等)。相比之下,共享内存缺乏内核保护,存在严重的数据竞争风险,必须借助信号量等同步机制实现互斥访问。消息队列适合简单通信场景,而共享内存虽高效但需额外同步开销。开发者应根据场景需求选择:消息队列适用于无需复杂同步的通信,共享内存则适合高性能但能承担同步成本的数据共享。原创 2025-12-12 15:47:39 · 1423 阅读 · 0 评论 -
Linux进程间通信之共享内存
摘要:共享内存是System V IPC中最快的进程间通信方式,允许多个进程直接访问同一物理内存区域,实现零拷贝数据传输。通过shmget()创建/获取共享内存,shmat()附加到进程地址空间,shmdt()分离,shmctl()删除。需配合信号量等同步机制防止竞争条件。优点是高速、高效、灵活,缺点是需手动同步和管理。适用于大数据量、高性能要求的进程通信场景,但需注意资源清理和权限设置。典型应用包括频繁通信的多进程数据共享。原创 2025-12-11 17:08:15 · 625 阅读 · 0 评论 -
Linux进程间通信之消息队列
消息队列是一种System V IPC机制,允许进程通过消息进行通信。每条消息包含类型和正文,接收方可按类型选择性接收。消息队列由内核维护,具有持久性直到显式删除。主要特点包括:消息边界明确、一对一消费模式(消息被接收后即删除)、任意进程间通信。通过msgget()创建队列,msgsnd()发送消息,msgrcv()接收消息。1对多通信需发送多条不同mtype的消息。系统调用包括msgget()、msgsnd()、msgrcv()和msgctl(),分别用于创建、发送、接收和控制消息队列。原创 2025-12-10 15:06:23 · 992 阅读 · 0 评论 -
Linux进程间通信之命名管道(FIFO)
命名管道(FIFO)是一种特殊文件,允许任意进程通过文件系统路径进行通信。它通过mkfifo()创建,支持阻塞和非阻塞模式操作。FIFO具有单向通信特性,数据在内核缓冲区传输,不写入磁盘,性能接近普通管道。优点是跨进程通信简单高效,缺点是单向传输且需处理阻塞问题。适用于需要简单进程间通信的场景,但不适合复杂消息传递需求。原创 2025-12-09 17:08:07 · 735 阅读 · 0 评论 -
Ubuntu 64位编译32位程序
title: Ubuntu 64位编译32位程序背景一般情况下,一个平台上只能编译当前平台对应的应用程序,比如,64位平台编译64位应用程序,但是随着64位平台的普及,多数采用了64位操作系统,而有时又基于某些原因需要编译出32位的应用程序.本文旨在说明如何在64位操作系统上编译出32位应用程序.准备确认主机为64位架构的内核,应该输出为amd64$ dpkg --print-ar...原创 2019-05-20 17:39:24 · 2792 阅读 · 0 评论 -
lua字节码混淆与反编译
title: luadec相关的一些总结背景在做openwrt相关的路由器时,为了更好的保护lua脚本的代码,通常会选择采用luac进行混淆,这样就需要稍微研究一下如何进行混淆和解密。本文所使用的混淆是lua源代码中带的luac,解密采用的是viruscamp/luadec 的解密工具。混淆、解析和反编译的前提是对文件格式的定义是一致的,因而一般需要把格式定义在lua解释器的源码中,并在适当...原创 2019-05-20 17:21:27 · 13243 阅读 · 0 评论
分享