-
-
培训对象:
-
适合具备C语言编程基础,熟悉Linux基本操作(文件操作、目录结构、常用命令),希望系统掌握Linux应用层软件开发核心技术,向Linux后端开发或嵌入式应用开发方向进阶的软件开发工程师、嵌入式开发人员及计算机相关专业学生。
-
-
培训目标:
-
完成本课程后,学员将能够深入理解Linux系统编程的核心概念(进程/线程模型、内存管理、文件I/O、进程间通信),熟练掌握文件I/O、进程管理、线程同步、网络编程、信号处理等核心系统调用接口,掌握GCC、Make、GDB等开发工具的使用方法,具备独立开发高效、稳定的Linux应用软件的能力,能够解决多线程并发、网络通信等复杂编程问题。
-
-
培训内容:
-
(1)Linux系统编程概述与环境搭建:了解系统编程的核心价值及其与应用程序开发的区别。掌握系统调用与库函数的本质区别(用户态/内核态切换、封装层次)。搭建系统编程实验环境(Ubuntu/CentOS),熟悉GCC编译器的各个阶段(预处理、编译、汇编、链接)。学习Makefile编写规范,实现项目的自动化构建。掌握GDB调试器的核心命令,为后续调试打下基础。
-
(2)文件I/O编程:深入理解文件描述符的概念及其在内核中的表示机制。掌握文件I/O核心接口:open(打开)、read(读取)、write(写入)、lseek(定位)、close(关闭)的正确使用。学习文件共享与原子操作技术,理解多个进程同时读写同一文件时的数据一致性保证。掌握标准I/O库(fopen/fread/fwrite)与系统调用的性能差异及适用场景。
-
(3)文件系统与目录管理:掌握文件属性管理接口:stat、fstat、lstat获取文件元信息(权限、大小、时间戳)。学习文件权限控制方法(chmod、access)。掌握目录操作接口:opendir、readdir、closedir实现目录遍历,scandir进行目录扫描。理解硬链接与软链接的实现原理及其在应用开发中的应用场景。
-
(4)进程管理与控制:理解进程的完整生命周期(创建、运行、终止、回收)与状态转换机制。掌握进程创建接口:fork(创建子进程)、vfork(共享地址空间创建)的实现原理与区别。学习执行新程序接口:exec族函数(execl、execlp、execle、execv、execvp)的用法。掌握进程退出与资源回收:exit、_exit、wait、waitpid的使用方法,避免僵尸进程产生。
-
(5)守护进程与系统日志:理解守护进程的概念及其在后台服务中的核心地位。掌握守护进程的编程模型:fork脱离终端、setsid创建新会话、chdir更改工作目录、umask重设文件权限、关闭不需要的文件描述符。学习系统日志接口:syslog、openlog、closelog的使用,实现守护进程的日志记录。
-
(6)信号处理机制:理解信号的本质(软件中断)及其在内核中的处理流程。掌握标准信号与实时信号的差异。学习信号注册与处理接口:signal、sigaction的使用方法。掌握信号集操作函数:sigemptyset、sigfillset、sigaddset、sigdelset、sigismember。实现异步事件处理,掌握SIGCHLD信号在子进程回收中的应用。
-
(7)多线程编程基础:理解线程与进程的本质区别(资源共享、调度开销)。掌握POSIX线程库(pthread)的核心API:线程创建(pthread_create)、线程终止(pthread_exit)、线程回收(pthread_join)、线程分离(pthread_detach)。学习线程属性的设置方法(pthread_attr_init、pthread_attr_setdetachstate等)。
-
(8)线程同步机制:深入掌握线程同步的核心机制:互斥锁(mutex)保护临界区、条件变量(condition variable)实现等待/唤醒、读写锁(rwlock)优化读多写少场景、信号量(semaphore)控制资源访问。理解死锁的产生条件与避免策略。学习线程安全与可重入函数的概念,掌握线程局部存储(Thread Local Storage)的使用方法。
-
(9)进程间通信(IPC)基础:掌握管道通信机制:匿名管道(pipe)实现父子进程通信、命名管道(FIFO)实现无亲缘关系进程通信。学习信号量(System V/POSIX)实现进程同步。掌握共享内存(System V/POSIX)实现高效数据交换,结合信号量实现生产者-消费者模型。了解消息队列的使用场景。
-
(10)网络编程基础:掌握TCP/IP协议栈的核心原理与socket编程的基本流程。学习TCP客户端/服务器模型的完整实现:socket创建、bind绑定、listen监听、accept接受、connect连接、send/recv数据收发。掌握UDP编程的差异与适用场景:sendto/recvfrom实现无连接通信。学习网络字节序与主机字节序的转换函数(htonl、htons、ntohl、ntohs)。
-
(11)I/O多路复用技术:理解I/O多路复用在高并发网络服务器中的核心价值。掌握select机制的用法及其局限性(文件描述符数量限制、重复初始化开销)。学习poll机制的原理与使用,理解其相对于select的改进。深入掌握epoll机制的边缘触发(ET)与水平触发(LT)模式,实现高性能事件驱动服务器。
-
(12)综合项目实战:高并发网络服务器开发:结合所学知识,完成一个完整的高并发网络服务器项目(如简易Web服务器、即时通信服务器、文件传输服务器)。涵盖需求分析、系统设计(线程池/Reactor模型)、编码实现(socket+epoll+多线程)、调试优化(GDB/Valgrind)、文档撰写的全流程。通过项目实战检验Linux系统编程的综合应用能力,形成规范的项目报告。