【Linux系统编程介绍】 📅 发布时间:2026/7/4 13:17:55 👁️ 浏览次数: 文章目录一、Linux 系统编程是什么二、必备环境与工具1. 环境2. 常用编译选项三、基础系统调用快速回顾1. 文件 I/O2. 进程控制3. 信号4. 线程用户态库四、进程间通信IPC综述五、文件描述符与 I/O 多路复用一、Linux 系统编程是什么Linux 系统编程指的是使用 C/C与 POSIX/Linux 提供的 API系统调用库来实现与内核交互的程序。核心点有使用系统调用open,read,write,fork,exec,socket等直接操作资源。理解文件描述符、权限、阻塞/非阻塞模式。进程/线程管理与信号处理。网络编程BSD sockets。高性能 I/Oselect/poll/epoll。进程间通信管道、FIFO、共享内存、消息队列、socketpair。调试与性能分析工具strace,gdb,valgrind等。二、必备环境与工具1. 环境Linux任意主流发行版如 Ubuntu, CentOS, Debian。编译器gcc/clang。推荐gcc。开发工具make、gdb、strace、valgrind、ncnetcat用于测试网络。2. 常用编译选项# 基本编译gcc-Wall-Wextra-O2-omyprog myprog.c# 带调试信息gcc-g-Wall-Wextra-O0-omyprog_debug myprog.c# 链接 pthread线程gcc-pthread-omythread prog.c三、基础系统调用快速回顾1. 文件 I/Oopen,read,write,close,lseek。推荐使用pread/pwrite在多线程/异步场景下避免移动文件指针竞态。示例读取文件前 100 字节#includefcntl.h#includeunistd.h#includestdio.h#includestdlib.hintmain(void){intfdopen(test.txt,O_RDONLY);if(fd0){perror(open);return1;}charbuf[101]{0};ssize_tnread(fd,buf,100);if(n0){perror(read);close(fd);return1;}printf(read %zd bytes: %s\n,n,buf);close(fd);return0;}2. 进程控制fork(),execve()及execlp等封装),waitpid()。fork()返回两次父进程得到子 pid子进程得到 0。注意资源复制写时复制 COW。示例fork 后 exec 一个新程序#includeunistd.h#includesys/wait.h#includestdio.hintmain(){pid_tpidfork();if(pid0){// childexeclp(ls,ls,-l,NULL);_exit(1);}else{// parentwaitpid(pid,NULL,0);printf(child finished\n);}}3. 信号signal()/sigaction()异步事件。避免在信号处理函数中做非可重入操作sigprocmask()管理阻塞信号。4. 线程用户态库pthread_create、pthread_join、互斥/条件变量。四、进程间通信IPC综述无名管道pipe()父子通信常用。命名管道FIFO持久化的管道。Unix domain socketAF_UNIX进程间比 TCP 更高效的 socket。共享内存shm_open/mmap最快但需要同步机制。消息队列System V 或 POSIX mq。示例创建无名管道并写入#includeunistd.h#includestdio.h#includestring.hintmain(){intfds[2];pipe(fds);pid_tpidfork();if(pid0){close(fds[1]);charbuf[100];read(fds[0],buf,sizeof(buf));printf(child received: %s\n,buf);}else{close(fds[0]);constchar*msghello from parent;write(fds[1],msg,strlen(msg)1);}return0;}五、文件描述符与 I/O 多路复用典型场景高并发网络服务器需要同时处理大量 socket。常用模型select()老旧fd 数量受限FD_SETSIZE。poll()可扩展到较大数量但遍历开销 O(n)。epollLinux 专用事件驱动O(1) 级别性能适合高并发。
空调箱串级PID温湿度控制 温湿度误差0.1、2% PLC 1200 1500(现场应用效果非常好) 空调箱串级PID温湿度控制 温湿度误差0.1、2% PLC 1200 1500(现场应用效果非常好)自己在医药空调自控项目中控温湿度过程中发现医药类项目对环境的温湿度控制精度要求比较高,开始使用单环PID进行控制,虽然控制效果基本能实现&#… 2026/7/4 16:56:33
代码随想录Day51图:dijkstra(堆优化版)_Bellman_ford 算法 代码随想录Day51图:dijkstra(堆优化版)_Bellman_ford 算法 dijkstra(堆优化版) 题目:小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。小明的起点是… 2026/5/17 9:26:17
基于Matlab Simulink的微电网逆变并网系统仿真研究:VSG虚拟同步机与下垂控制策略的优化 基于Matlab/Simulink搭建微电网逆变并网系统: 1.采用VSG虚拟同步机控制策略 2.采用下垂控制策略 仿真波形较好最近在实验室折腾微电网并网系统,顺手用Matlab/Simulink搭了个支持两种经典控制策略的模型。两种方案都跑出了丝滑的仿真波形,特别… 2026/5/17 9:26:17
豆瓣电影短评抓取工具:纯Java实现,含完整工程结构与jsoup解析逻辑 本文还有配套的精品资源,点击获取 简介:一个开箱即用的豆瓣电影用户短评采集工具,基于Java SE和jsoup库构建,不依赖Spring等Web框架。项目包含标准化Maven结构,核心类分工明确:JsoupUtil封装HTTP请求与H… 2026/7/5 9:59:03
烟气多组分浓度同步预测MATLAB工具包:GA优化BP网络,含数据+全流程代码 本文还有配套的精品资源,点击获取 简介:直接运行就能预测烟气中多种成分浓度的MATLAB工具包,内置真实采集的‘烟气浓度.xlsx’数据,支持多输入(如温度、流量、含氧量等)到多输出(SO2、NOx、粉… 2026/7/5 9:57:02
Linux groups命令详解|快速查询用户所属组、主组与附加组实战教程 1. 命令简介groups 命令用于显示指定用户所属的组名称列表。当不指定任何用户名时,默认显示当前用户所属的所有组。该命令是 Linux/Unix 系统中用户和组管理的基础工具,常用于快速检查和验证用户的组成员身份,这对于理解文件访问权限和用户特… 2026/7/5 9:57:02
本地运行的ESP8266双控智能家居套件:灯光调光+锅炉温控+人体感应联动 本文还有配套的精品资源,点击获取 简介:一套无需云服务、纯本地部署的PythonESP8266双控智能家居方案,支持灯光开关与PWM调光、锅炉启停及目标温度设定、人体红外自动触发、环境温湿度实时监测。ESP端提供4个独立Arduino源码(l… 2026/7/5 9:48:43
Unity实时水墨晕染工具:基于LBM流体模型的GPU加速墨迹扩散Shader 本文还有配套的精品资源,点击获取 简介:一套开箱即用的Unity水墨风格渲染解决方案,核心用格子玻尔兹曼方法(LBM)在GPU端模拟墨水在宣纸上的自然扩散、流动与混合过程。着色器逻辑集中在d2q9model.hlsl文件ÿ… 2026/7/5 9:48:43
解锁Codex全部潜力:10个必装Skills实战指南,从通用助手到超级副驾 🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你刚接触 Codex,可能会觉得它已经很强大了——能写代码、能调试、能重构,甚至能帮你分析复杂的技术问题。… 2026/7/5 9:46:43
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36