# Linux 应用层开发Notes **Repository Path**: wodedaliziha/LinuxApplicationLayer ## Basic Information - **Project Name**: Linux 应用层开发Notes - **Description**: 这份笔记是 Linux 应用层开发的优质学习指南,涵盖从基础操作到进阶编程的核心知识。 笔记特点是实用性强,每个知识点均配套语法说明、参数解析和代码示例,可直接对照实操,同时兼顾细节与体系,既是新手入门教程,也是开发中的速查手册,适合嵌入式、后端方向的 Linux 开发学习者。 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-12 - **Last Updated**: 2025-12-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: Linux, 嵌入式 ## README 这份笔记是 Linux 应用层开发的优质学习指南,覆盖从基础操作到进阶编程的核心知识。 ### 笔记特点 - **实用性强**:每个知识点配套语法说明、参数解析和代码示例,可直接对照实操; - **体系完整**:从终端指令、工具使用,到进程/线程、网络编程,覆盖Linux应用开发全流程; - **双场景适配**:既是新手入门教程,也是开发中的速查手册,适合嵌入式、后端方向的Linux开发者。 ### 内容结构 1. **基础篇**:Linux终端操作、文件权限、常用命令; 2. **工具篇**:vim/gcc/GDB/Makefile/CMake的使用技巧; 3. **核心篇**:文件操作、进程/线程管理、信号机制、网络编程; 4. **实战篇**:TCP/UDP通信、群聊系统等项目案例。 ### 使用说明 直接下载即可: ### Linux应用层笔记 - 章节索引 ## 第一章 Linux预备学习指令 1.1 第一节:终端使用-文件介绍 - 1.1.1 终端提示符 - 1.1.2 权限 1.2 Linux 中的常用符号 1.3 常用命令 - 1.3.1 root 用户和 sudo 命令 - 1.3.2 man 手册 - 1.3.3 用户管理指令 - (1)用户切换指令(su) - (2)增加用户指令(useradd 和 adduser) - (3)用户删除指令(userdel) - (4)设置账号密码(passwd) - (5)磁盘文件管理指令(cd、pwd、ls、tree) - (6)cat、mkdir、touch、cp - (7)move、rm、ln - (8)逐屏显示的文件(more、less) - (9)权限更改(chmod) - (15)搜索(whereis) - (16)查找指令(find) - 1.3.4 系统网络指令 - (1)查看网络信息 - (2)网络测试(ping) - (3)信号指令(kill) - (4)显示进程状态(ps、pstree、top) - (5)重启指令(reboot) - (6)清屏指令(clear) - (7)时间显示(time) - 1.3.5 压缩打包相关命令 - 1.3.6 安装指令(apt-get、dpkg) - 1.3.7 main 函数传参 ## 第二章 Linux 下的常用工具 2.1 vim 2.2 编译器 gcc 2.3 库 2.4 GDB 调试 - 一、GDB 调试前提 - 二、GDB 启动与退出 - 三、GDB 核心调试命令 - 四、GDB 调试实战示例 - 五、GDB 高级技巧 2.5 Makefile - 2.5.1 Makefile 核心概念 - 2.5.2 Makefile 变量 - 2.5.3 常见规则示例 - 2.5.4 Makefile 执行与调试 - 2.5.5 高级技巧 - 2.5.6 Makefile 与 CMake 的区别 2.6 Cmake - 2.6.1 安装 cmake - 2.6.2 如何使用 cmake - 2.6.3 如何创建 cmake - 2.6.4 cmake 相关函数 ## 第三章 文件操作 3.1 基于缓冲区的文件操作 3.2 基于非缓冲区的文件操作 - 3.2.1 open - 3.2.2 close - 3.2.3 write - 3.2.4 read - 3.2.5 lseek 3.3 时间编程 - 3.3.1 date - 3.3.2 cal 3.4 时间相关的函数 - 3.4.1 time - 3.4.2 localtime - 3.4.3 gmtime - 3.4.4 ctime - 3.4.5 asctime - 3.4.6 strftime ## 第四章 目录操作|文件属性 4.1 目录遍历 - 4.1.1 opendir - 4.1.2 closedir - 4.1.3 readdir 4.2 目录操作 - 4.2.1 mkdir - 4.2.2 rmdir - 4.2.3 chdir - 4.2.4 chmod - 4.2.5 getcwd 4.3 文件属性 - 4.3.1 stat、lstat、fstat ## 第五章 进程 5.1 进程的相关函数 - 5.1.1 getpid、getppid 查看进程号 - 5.1.2 fork、vfork 进程创建(最重要) - 5.1.3 特殊进程 - 5.1.4 wait、waitpid 进程等待 - 5.1.5 exit、_exit 进程退出 - 5.1.6 atexit 进程退出清理函数 5.2 exec 函数族 5.3 shell 命令 5.4 mpg123 的使用 - MP3 音频播放器 ## 第六章 信号 6.1 信号的相关函数 - 6.1.1 发送信号函数 - 6.1.1.2 raise - 6.1.1.2 kill - 6.1.2 信号处理函数(最重要) - 6.1.2.1 signal ## 第七章 线程 第一节:线程 第二节:线程的创建 第三节:获取线程号 第四节:线程等待函数/线程分离函数 第五节:线程退出函数 第六节:线程清理函数 --- 栈式结构 第七节:线程取消函数 第八节:线程通信 - 8.1 多线程共享进程资源,通信非常方便,借助全局变量 - 8.2 信号 第九节:线程同步和互斥 - 9.1 互斥锁 - 9.2 条件变量 - 9.2.1 条件变量初始化函数 - 9.2.2 销毁条件变量函数 - 9.2.3 pthread_cond_wait 函数 - 9.2.4 pthread_cond_signal 函数 - 9.2.5 程序示例 ## 第八章:网络编程 第一节:TCP 客户端编写流程 - 8.1.1 socket 套接字 - 8.1.2 connect 连接服务器 - 8.2.3 发送/接收 第二节:TCP 服务器 - 8.2.1 创建套接字(用于客户端连接服务器的套接字) - 8.2.2 绑定服务器的 IP 和端口 - 8.2.3 监听:设置服务器在同一时刻允许多少个客户端连接 - 8.2.4 等待客户端连接_堵塞 - 8.2.5 收发数据 - 8.2.6 关闭套接字 - 8.2.7 程序示例 - 8.2.8 TCP 实现群聊功能示例 第三节:UDP - 8.3.1 接收方流程 - 8.3.1.1 创建套接字接收消息 - 8.3.1.2 绑定 - 8.3.1.3 接收消息 - 8.3.1.4 程序 - 8.3.2 发送方流程 - 8.3.2.1 创建套接字接收消息 - 8.3.2.2 发送消息 - 8.3.2.3 程序 第四节:多路 IO 复用 - 8.4.1 epoll 核心函数 - 8.4.1.1 创建 epoll 句柄 - 8.4.1.2 注册 epoll 监控事件 - 8.4.1.3 等待事件发生_可堵塞 - 8.4.1.4 epoll 群聊程序示例 - 8.4.2 select - 8.4.2.1 概念 - 8.4.2.2 select 函数 - 8.4.3 poll 函数 - 程序 第五节 语音群聊项目程序 - 客户端程序 - 服务器程序 ## 第七--八章 阶段总结