- 博客(24)
- 收藏
- 关注
原创 QNX 中的 fork() 详解(完整+实用,含与Linux区别
你想了解QNX实时操作系统中 fork() 系统调用的用法、特性、注意事项以及和Linux的差异,这篇内容会把核心知识点全部讲透,QNX的 fork() 有专属特性,和Linux的 fork() 差异非常大,这也是开发中最容易踩坑的点。结论先说:QNX 的 fork() 行为和 Linux 的 fork() 差异巨大,最核心的差异集中在「线程处理」和「内核实现」,这是QNX开发中最容易踩坑的点,很多Linux开发者移植代码到QNX会因为这个差异导致程序崩溃/死锁。
2026-01-09 22:26:39
948
原创 qnx中buildProxy详解
buildProxy 相关函数主要定义在 <sys/proxy.h> (或 <sys/neutrino.h> )中,最核心的是 proxy_create() (也有老版本兼容的 buildproxy() 宏/函数)。flags :创建标志: - PROXY_FLAG_NONE :默认值;代理的核心价值:ISR无法直接接收/发送消息,通过 proxy_create() 创建的代理对象,成为ISR与用户进程之间的“桥梁”;pid :要关联的进程ID:代理对象归属的进程(通常是需要接收消息的目标进程)。
2026-01-08 22:37:53
50
原创 QNX 操作系统中 subscribe (订阅)相关的机制和 API
QNX 操作系统中 subscribe (订阅)相关的机制和 API,核心是 QNX 作为微内核实时操作系统,其订阅能力主要体现在进程间通信(IPC) 和事件通知场景中,用于实现进程/线程间的异步事件监听与响应。一、QNX 中 “订阅” 的核心场景与 API。代码示例:订阅脉冲(异步事件)二、QNX 订阅机制的核心特点。
2026-01-07 22:24:31
69
原创 QNX 中的 name_open()
简单来说,QNX 中的进程可以通过 name_attach() 将自己的 IPC 资源(如 ChannelCreate() 创建的通道)注册到命名服务中并赋予一个名称,而其他进程则通过 name_open() 查找这个名称,获取可操作的描述符,从而实现跨进程通信。name_open() 的核心作用是:在 QNX 命名服务中查找指定名称的已注册对象(通常是通道、消息队列等 IPC 资源),并建立与该对象的连接,返回一个可用于后续 IPC 操作的文件描述符(file descriptor)。
2026-01-06 23:33:17
57
原创 select函数使用和示例
由于 select 返回后会修改传入的fd集合(只保留就绪的fd),因此每次调用 select 前都需要重新初始化集合(这是 select 的一个劣势)。FD_ISSET(int fd, fd_set *set) :检查 fd 是否在就绪集合 set 中(对应位是否为1),返回非0表示就绪,0表示未就绪。FD_SET(int fd, fd_set *set) :将文件描述符 fd 添加到集合 set 中(对应位设为1)。二、使用 select 的固定流程(核心步骤)步骤5:循环调用(可选,持续监视多fd)
2026-01-05 22:30:48
1058
原创 QNX MsgReceive 函数使用详解
非负整数 成功,返回发送方的连接ID( coid ),可用于后续 MsgReply / MsgError 回复消息。-1 失败,同时设置 errno 指明错误原因(如 EBADF 无效通道ID、 EFAULT 缓冲区地址非法等)这是QNX微内核中实现进程间通信(IPC)的核心函数之一,主要用于从消息队列中接收消息或同步信号。代码编译与运行(QNX环境)五、注意事项与最佳实践。
2026-01-04 22:31:49
977
原创 C++中的三五法则
析构函数 ~T()拷贝构造函数 T(const T&)拷贝赋值运算符 T& operator=(const T&)析构函数 ~T()拷贝构造函数 T(const T&)拷贝赋值运算符 T& operator=(const T&)移动构造函数 T(T&&) noexcept移动赋值运算符 T& operator=(T&&) noexcept。
2025-08-08 09:45:32
93
原创 lambda函数笔记(C++ 11)
C++中的lambda函数和std::function提供了强大的函数封装能力。lambda函数支持匿名定义、变量捕获、参数传递,可与STL算法配合使用,并支持mutable修饰符修改捕获变量。std::function作为通用可调用对象封装器,能够存储函数指针、lambda表达式和bind表达式,实现类型安全的运行时多态调用。两者结合使用,可以构建灵活的回调机制和函数对象体系,提高代码的可复用性和表达力。 (字数:149)
2025-07-19 08:30:00
55
原创 std:thread知识点笔记 C++ 11
是 C++11 提供的线程类,位于<thread>头文件中。创建线程时,可以将一个可调用对象(函数、lambda 表达式、函数对象等)作为参数传入构造函数。// 创建线程并运行t.join();// 等待线程结束return 0;
2025-07-14 17:00:00
133
原创 C++ 智能指针
可以指定自定义的删除逻辑,例如用于资源类型非new/deletedelete ptr;特点说明优点安全、高效、无共享风险缺点无法共享所有权适用单一所有者模型、资源唯一管理者替代选择若需共享所有权,应使用在 C++ 中,是一种非常常见且推荐的资源管理方式,尤其适用于需要存储一组动态分配对象、并希望自动管理其生命周期的场景。它也常用于多态资源管理中,即基类指针指向派生类对象的情况。若资源非new/delete分配(如系统资源、文件句柄等),可以为unique_ptr。
2025-07-07 22:43:44
68
原创 noexcept
noexcept是 C++11 引入的关键字,用于指定函数是否会抛出异常。它可以帮助编译器进行优化,并提高代码的安全性和可维护性。移动语义控制:在移动构造函数和移动赋值操作符中使用 noexcept 可以确保容器类选择更高效的实现路径。如果移动构造函数不是 noexcept,则标准库容器可能会优先选择复制而不是移动操作以确保异常安全。如果你想让某个函数保证不会抛出异常,可以将其声明为 [noexcept]项目说明关键字noexcept目的显式声明函数不会抛出异常优点。
2025-07-03 17:00:00
66
原创 move_if_noexcept
摘要:std::move_if_noexcept是C++11引入的异常安全工具函数,定义在<utility>中。它根据类型特性决定返回类型:若移动构造函数标记为noexcept则返回右值引用(允许移动),否则返回左值引用(强制拷贝)。该机制被STL容器(如vector扩容)广泛用于平衡性能与异常安全。使用时应为不抛异常的移动构造函数添加noexcept声明,以充分发挥其优化作用
2025-06-30 07:00:00
87
原创 windows下常用的cmd命令
以上命令适用于 CMD 和 PowerShell,部分命令在 PowerShell 中可能有更强大的替代命令(如。type <文件名>echo <字符串>
2025-06-27 07:00:00
360
原创 throw&runtime_error
它用于表示在程序运行期间发生的、无法在编译时预测的错误。抛出一个异常对象,以通知调用栈中的上层代码进行处理。关键字用于抛出异常。当程序遇到错误或异常情况时,可以使用。是 C++ 标准库中定义的一个异常类,位于头文件。),但在C++17中已被弃用,推荐使用。重新抛出当前捕获的异常,传递给外层的。如果需要更具体的错误类型,可以从。,可以实现更健壮的错误处理机制。旧版本C++支持异常规范(如。
2025-06-26 09:03:41
278
原创 thread_local
C++中的thread_local是线程局部存储(TLS)的存储类说明符,它为每个线程创建独立的变量实例,避免多线程数据竞争。主要特点:1)确保线程安全,无需额外同步机制;2)变量生命周期与线程绑定;3)适用于全局变量、静态成员变量和动态分配场景。使用示例包括基本线程变量、类静态成员和动态内存管理。注意事项:初始化/销毁顺序不可控、性能开销需权衡。该特性简化了线程安全变量的实现,是并发编程的重要工具。
2025-06-25 10:45:00
356
原创 pipeline使用
pipeline是 Hugging Face库中的一个高级接口,旨在简化自然语言处理(NLP)任务的实现。它提供了一种统一的方式来加载预训练模型并执行各种任务,而无需手动处理模型的加载、预处理和后处理步骤。以下是pipeline。
2025-03-21 20:54:14
423
原创 C++ 环境搭建-cmake的安装和使用
版本:VMware 10.0.1 build-1379776运行系统 ubuntu系统版本:ubuntu 16.04 LTS。
2025-02-07 06:00:00
769
原创 RAII (Resource Acquisition Is Initialization) 详解
提供自动的资源管理确保异常安全使代码更加简洁和可靠减少资源泄漏的风险避免手动资源管理的错误提高代码的可维护性确保程序的稳定性和可靠性。
2025-02-06 08:50:54
504
原创 主机windows系统,虚拟机安装ubuntu无线网络连接配置
主机系统:windows系统虚拟机版本:VMware 10.0.1 build-1379776ubuntu系统版本:ubuntu 16.04 LTS。
2024-08-26 23:27:28
1540
原创 Deepin安装perf工具
linux-tools-common 是一个由 Linux 内核源代码中的工具链生成的软件包,里面包含perf工具。由于第三步执行的结果显示,版本是5.15,所以命令中是5.15。如果执行失败可以查看另外一篇文章解决该问题。Deepin安装perf工具主要命令。查看安装的perf工具是否安装成功;会输出你的内核版本,确保安装的。工具与你的内核版本相匹配。查看自己的内核版本,
2024-06-18 07:00:00
591
原创 Deepin系统增加软件源
apt源内的软件可能与系统存在不兼容的问题,所以一定要提前备份sources.list文件。也可以直接使用系统编辑的文本工具编辑,使用文本工具编辑权限不够时,可以使用命令。filename替换成目标文件名称。deepin增加更换阿里云软件源。出现不兼容时,已备替换。4.根据提示添加密钥包。
2024-06-17 11:04:33
2005
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅