logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【Linux】环境变量与main()函数参数

PATH是系统查找可执行程序的目录列表,ls 等指令的目录在其中所以不用./;HOME是当前用户的家目录,就是它的简写;USER记录当前登录用户名;PWD是终端当前所在目录。这些变量就像系统的基础说明书,程序读取它们就能获取系统和用户的关键信息。Linux 中所有可执行程序的真正入口函数都不是 main (),而是_start 函数,main () 只是 C/C++ 编译器为我们封装的应用层入口,

文章图片
#linux#运维#服务器
【Linux】动静态库原理及制作

文章摘要:本文系统讲解了编程中库的概念与使用原理。首先阐述了库的本质是经过验证的可复用代码集合,分析了从源代码到可执行文件的完整编译链接过程。重点对比了动静态库的核心区别:静态库在链接时合并到可执行文件中,而动态库在运行时加载。详细介绍了动静态库的制作方法,包括ar命令创建静态库、gcc的-fPIC选项生成位置无关码的动态库,以及解决库路径问题的多种方案。通过反汇编和ldd等工具验证了动静态库的不

文章图片
#linux#运维#服务器
【Linux】进程信号(上半)

Linux信号机制解析:Ctrl+C如何终止进程 摘要: 本文深入解析了Linux信号机制,以Ctrl+C终止进程为例,阐述了信号的工作原理。信号是内核通知进程的一种异步通信方式,具有延迟性和可配置性。文章介绍了62种信号类型,重点分析了SIGINT(2)信号的特点及处理方式。通过signal()接口,进程可以自定义信号处理函数,但SIGKILL(9)和SIGSTOP(19)信号无法被捕获。

文章图片
#linux#运维#服务器
【Linux】中断 —— 操作系统的运行基石

操作系统通过中断机制实现高效资源管理:硬件中断(如键盘输入)由外设触发,通过中断控制器唤醒CPU处理任务;时钟中断由CPU内置时钟源定期触发,用于进程调度和时间管理。系统核心是一个死循环,无任务时CPU进入低功耗状态。软中断(如系统调用)允许用户态程序通过指令(int 0x80/syscall)主动陷入内核态。进程故障也会触发中断,内核在返回用户态前会检查并处理信号,形成"无穷符号&qu

文章图片
#嵌入式硬件#linux#运维
【Linux】深入解剖页表——分页式存储

理解了的本质后,我们便能清晰认知到:每个进程都拥有一段独属于自身的连续地址空间。不同于实际存储数据的物理内存,这段连续的虚拟地址空间更像是一张划定好范围的 “大饼”—— 仅作为进程内存访问的统一地址框架,并不承担实际的数据存储功能。真正的存储还需要在物理内存实现,那么从虚拟内存到物理内存就需要进行映射——因此就产生了页表。

文章图片
#linux#运维#服务器
【Linux】线程同步——互斥锁

多线程环境下if条件判断可能失效的原因分析及解决方案。通过抢票程序示例说明,当多个线程并发访问共享变量count时,由于if判断和count--操作不具备原子性,在判断后线程切换可能导致票数变为负数。这源于临界资源访问的非原子性操作。解决方法是引入线程互斥机制,使用pthread_mutex_t互斥锁保护临界区,确保同一时刻只有一个线程执行临界区代码。文章详细介绍了互斥锁的静态和动态初始化方法,以

文章图片
#linux#运维#服务器
【Linux】线程同步——信号量及其实战代码

信号量(Semaphore)是一种灵活的同步机制,通过计数器实现对多份共享资源的精细化管控,解决了互斥锁"非0即1"二元模式的局限性。POSIX标准提供了sem_init()初始化、sem_wait()阻塞申请、sem_trywait()非阻塞申请、sem_timedwait()限时申请、sem_post()释放资源以及sem_destroy()销毁等核心接口。信号量可配置初始

文章图片
#linux#运维#c++
【Linux】单例模式与线程池(含实战代码)

摘要:单例模式是确保类仅有一个实例的设计模式,分为饿汉式(启动时创建)和懒汉式(首次调用时创建)。饿汉式线程安全但可能浪费资源,懒汉式更常用但需加锁保证线程安全。文章还介绍了线程池的池化技术,通过预创建和复用线程提升效率,并展示了结合单例模式的线程池实现,包括线程封装、锁机制、条件变量和任务队列管理。代码示例演示了如何创建线程安全的单例线程池,实现任务的生产消费模型。

文章图片
#单例模式#开发语言#linux +1
深入链路层:报文 MAC 传输原理与 ARP 欺骗、中间人攻击全解析

在 TCP/IP 四层模型中,数据链路层位于,是主机与局域网通信的核心桥梁,它屏蔽了底层物理介质的差异,为网络层提供。把网络层传下来的 IP 数据包,加上帧头、帧尾封装成,交给物理层发送;接收时则剥离帧头帧尾,取出 IP 数据包上交网络层。数据链路层只负责之间的数据传输,不关心跨网段路由,只关心 “下一跳是谁”。使用标识网卡设备,实现局域网内的精准寻址,这也是它与网络层 IP 地址的最大区别。通过

文章图片
#网络#服务器#运维
【Linux】程序持久化运行记录——日志<含基础封装实战代码>

本文介绍了一个基于C++17的通用日志模块设计,采用策略模式、RAII机制和流式拼接三大核心思想。该模块支持控制台和文件两种输出方式,通过智能指针自动管理资源,使用互斥锁保证线程安全。日志内容包括时间、级别、进程ID、文件名和行号等信息,支持任意类型数据的流式拼接。实现上利用析构函数自动触发日志写入,避免了手动刷新操作。模块提供简洁的宏定义接口,便于在项目中快速集成和使用。

文章图片
#开发语言#linux#c++
    共 12 条
  • 1
  • 2
  • 请选择