- 博客(24)
- 收藏
- 关注
原创 利用有名管道实现多进程读写
操作都是原子的,多个写进程的消息不会出现 “交错拼接”(比如进程 A 写 “AB”,进程 B 写 “CD”,不会出现 “ACBD” 的情况)。,读进程会先读到 “Hello”,再读到 “World”,不会出现 “WorldHello” 的乱序。例:进程 A 写 “Hello”,进程 B 写 “World”,缓冲区会存储为。(即有写进程在等待读进程):内核会从写等待队列中唤醒一个(或所有)等待的写进程。—— 即一个写进程的完整数据会被一次性写入缓冲区,不会被其他写进程的写入打断。对应的内核数据结构。
2025-11-20 10:27:06
1021
原创 exec() 族函数使用
程序会读取用户输入指令,通过创建的子进程执行execvp函数,去执行一个新程序即我输入的指令。List (l): 将命令行参数作为一个个独立的字符指针传入,最后必须以。Vector (v): 将命令行参数放入一个字符指针数组中,该数组必须以。所以所有用到列表作为传入参数方式的函数在exec后都会有个。所以所有用到列表作为传入参数方式的函数在exec后都会有个。目录下)指定的目录列表中自动搜索名为。Path (p): 函数名带。数组传递,该数组也必须以。Vector(数组)Vector(数组)
2025-11-16 14:50:48
741
原创 Linux操作系统学习
对于多线程进程,主线程的pid等于tgid,pid此时可以理解为主线程的线程ID或者进程ID,普通线程的tgid等于主线程的pid和tgid,即当前线程所属的线程组ID和进程ID,而pid字段此时相当于线程ID。在32位系统中,每个进程的虚拟内存地址空间为4GB,假设页大小为4KB,则一个进程的虚拟地址空间要分为1M页,假定每个PTE的大小为4字节,每个进程就需要占用4MB的空间来存储页表,启动100个进程,仅页表就要占用400MB的内存空间。如底层硬件错误,或者进程产生的算数异常,无法被修复。
2025-11-12 18:39:47
766
原创 Makefile规则与构建
1、按i进入编辑模式,左下角会有-- INSERT --2、编辑完成后按Esc,左下角的-- INSERT -- 会消失3、输入:wq保存退出写好一个脚本,首先需要先给他这个脚本执行权限可以先使用shell指令看下脚本的权限,在脚本目录下写入shell命令ls -l可以看到是有执行权限的最后即可运行./build.sh。
2025-11-10 10:20:00
1382
原创 Webots中并联结构处理
先找到杆1的endpoint solid下面增加一个铰链关节,即hingejoint(约束两个刚体相对运动),节点下有jointParameters,主要需要配置他的旋转轴axis和坐标anchor,axis是看这个点需要绕哪个轴转,anchor是基于杆1坐标系的位置点坐标。如下,我的两根杆相连处算并联,在URDF中处理时只能是两个枝下来,一个是1-3,另外一个是2,那1和2末端处是没有连接的。同理找到杆2的endpoint solid,和杆1同样配置,注意这里anchor是基于杆2坐标系的位置点坐标。
2025-11-08 10:19:00
478
原创 Linux守护进程
守护进程(Daemon)是一类在后台运行的特殊进程,独立于控制终端且周期性地执行某种任务或等待处理某些事件。返回值:成功则返回调用进程的新会话ID,失败则返回(pid_t)-1,并设置errno以指明错误原因。作用:如果调用进程不是进程组的领导者,则创建一个新的会话。:不依赖终端交互,启动后脱离用户登录会话,即使关闭终端也能继续运行。:不属于任何用户的前台进程组,避免被意外终止。创建子进程,父进程退出(脱离终端控制)。创建新会话,成为会话组长,脱离原进程组。并让父进程退出,避免进程获得控制终端。
2025-10-27 19:17:25
179
原创 Linux操作系统(三)---传输层TCP开发函数
摘要:本文介绍了TCP网络编程中的核心函数。主要包括socket()创建套接字、bind()绑定地址、listen()设置监听、accept()接收连接、connect()建立连接等基础函数,以及send()/recv()数据传输函数和shutdown()/close()关闭连接函数。
2025-10-25 21:20:34
1183
原创 Linux操作系统(二)---网络字节序和主机字节序转换
本文介绍了字节序的分类及网络编程中的关键转换函数。字节序分为大端、和小端。重点讲解了4个核心转换函数(htonl/htons/ntohl/ntohs)的用途和命名规则,以及IP地址转换函数族(inet_aton/pton/network等)的功能差异。同时说明了网络号与主机号的拆分原理,包括inet_makeaddr、inet_lnaof和inet_netof等函数的使用场景。
2025-10-24 21:09:41
970
原创 Linux操作系统(一)---传输层TCP协议
本文详细解释了TCP协议定义、TCP特点、TCP的报文段、定义的11种状态(如LISTEN、ESTABLISHED等)。并详细解释了三次握手建立连接过程和四次挥手释放连接过程
2025-10-24 15:18:25
1765
原创 基于STM32的IMU数据融合(加速度计,陀螺仪)
本文介绍了六轴传感器数据融合的姿态解算方法。基于Mahony算法的互补滤波方案:通过加速度计测量值归一化后与理论重力向量叉乘获得误差,采用PI控制器对陀螺仪角速度进行误差补偿,最后通过四元数微分方程更新姿态。文章详细阐述了8个实现步骤,包括数据预处理、误差计算、积分补偿、四元数更新等关键环节,并分析了PID参数对传感器权重的影响。
2025-10-20 10:45:43
1527
原创 Linux操作系统中文件权限模式
→ 只有读权限(基于上述程序意思是其他用户只能读取管道,不能写入)→ 拥有读和写权限(基于上述程序意思是同组用户可以读写管道)→ 拥有读和写权限(基于上述程序意思是可以读写管道)八进制的每一位数字对应 3 个二进制位,分别表示。文件或目录的所有者属于同一个用户组的其他用户)第三位(4):其他用户的权限(不同组)从左到右分为三部分,其中前缀。第一位(6):文件所有者的权限。第二位(6):与所有者同组(以上式有名管道为例进行解释。
2025-10-17 20:54:11
496
原创 通过函数指针数组优化冗余的switch语句
摘要:通过函数指针数组优化多舵机控制代码,替代冗余的switch语句。定义一个包含4个函数指针的数组,每个元素指向对应的舵机控制函数。使用时只需遍历数组调用函数指针并传入参数,代码更简洁、扩展性更强,且运行效率不受影响甚至可能提升。这种实现方式避免了重复的switch-case结构,提高了代码的可维护性。
2025-10-15 20:18:51
194
原创 静态局部变量特性
C语言中静态局部变量(static)的特性决定了其只在首次进入作用域时初始化一次。这是由于:1)存储在静态区的变量生命周期与程序一致;2)编译器会生成特殊逻辑确保初始化代码只执行一次。与自动变量不同,静态变量能保留上次调用时的值,非常适合需要"记忆"状态的场景,如计数器、状态标记等应用。这种特性使其既有限定作用域的优势,又具备全局变量的持久性。
2025-10-15 20:13:36
365
原创 机器人运动学
本文探讨了刚体运动状态的描述方法,重点分析了二维和三维空间中的自由度(DOF)概念,并介绍了旋转矩阵的构建与应用。内容涵盖固定角和欧拉角两种旋转方式的区别,以及正/逆运动学的求解方法,包括解析法和数值法的适用场景与优缺点。此外,详细解析了D-H建模中的四个关键参数(关节角θ、连杆长度a、连杆偏移量d和扭转角α)的定义与几何意义,为机械臂运动学分析提供了理论基础。学习资源来自B站台大林沛群课程和优快云技术博客。
2025-10-15 19:59:48
805
原创 linux中execve函数的环境变量解释
就比如你知道 "遇到问题找警察",程序也需要知道 "一些需要执行文件该去找哪些目录"。这里我们就需要把这些可能需要用到的目录写上,中间用:隔开。3、char *const __envp[]: 指向字符串数组的指针 需要传入多个环境变量参数。char *const __argv[]: 指向字符串数组的指针 需要传入多个参数。(1) 需要执行的程序命令(同*__path)数组,新程序就会使用这些目录来查找它可能需要调用的程序。(2) 执行程序需要传入的参数。:系统管理员专用的本地程序。:用户安装的本地程序。
2025-10-14 20:53:26
318
原创 C++中构造函数初始化方式
两个类分别是Cdata和Cgoods类,Cdata类存储年月日和Cgoods类存储商品名称价格和数量,其中Cdata类是Cgoods类的一个类型。这么用需要注意:Cdata类构造函数正常写,当在Cgoods类写构造函数时要初始化这个cdata类,即要加上:_data(int year, int month, int day),构造函数体执行之前,调用。类的构造函数,用参数。
2025-10-10 21:02:16
141
原创 C++学习笔记(三)
/自定义数据类型public:mAge = age;//存放对象//创建数据it!= v.end();it++) {//放对象指针//创建数据it!= v.end();test02();return 0;
2025-10-09 09:47:27
849
原创 C++学习笔记(一)
1、#define 宏常量 #define day 72、const修饰变量时变为常量 const int month=12;
2025-10-09 09:38:25
577
原创 基于51单片机的微风扇控制器
1、可完成的任务:微风扇控制器具有启停功能,任意风速调整与控制功能及温度检测功能;可显示开机时间、当前温度、风扇速度等。(1)四位数码管:四位数码管显示器可以显示开机计时(小时与分钟)、风扇转速;通电后默认显示小时与分钟。(2)运行指示灯:开机后该指示灯按1Hz频率闪烁;(3)显示键:操作该键可以使数码管按时间、转速、熄灭的顺序显示;(4)启动/停止键:单次按下该键,风扇按设定速度转动,双次按下该键风扇停止转动,风扇默认为最高转速;(5)+ 键:每按下一次该键速度增加10%,直至最高转速,在任何时候都可以操
2022-06-21 16:56:11
424
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅