关注获取新书发布信息
本书是一本Linux操作系统上的C语言编程入门书籍,全书共分为11章,第1章主要讲解了Linux操作系统的安装与使用;第2章讲解了Linux操作系统的常用命令,包括用户与用户组管理命令、文件管理命令、软件管理命令、进程管理命令、网络管理与通信命令、帮助命令以及vim编辑器;第3章讲解了Shell编程的相关知识;第4~10章是Linux编程的核心知识,包括Linux C开发环境、文件I/O操作、Linux进程管理、信号、进程间通信、线程和socket网络编程;第11章讲解了并发服务器的原理和实现。
每个章节均配有经典案例,读者可以一边学习一边练习,巩固所学的知识,并在实践中提升实际应用能力。
本书附有源代码、习题、教学课件等资源,为帮助初学者更好地学习本书中的内容,还提供了在线答疑,希望得到更多读者的关注。
本书既可作为高等院校本、专科计算机相关专业的专用教材,也可以作为技术爱好者的入门用书。
第1章 初识Linux操作系统 1.1 Linux操作系统概述 1.1.1 Linux操作系统的起源与发展 1.1.2 Linux操作系统的发行版本 1.1.3 Linux操作系统的特点 1.1.4 Linux操作系统的应用领域 1.2 安装Linux操作系统 1.2.1 安装VMware虚拟机软件 1.2.2 下载CentOS Stream 9操作系统镜像文件 1.2.3 安装CentOS Stream 9操作系统 1.3 通过VMware管理Linux操作系统 1.3.1 系统关机、挂起与重启 1.3.2 快照 1.4 Linux操作系统的用户界面 1.4.1 图形用户界面简介 1.4.2 Shell简介 1.4.3 打开Shell终端 1.4.4 Shell终端的命令操作 1.5 远程终端访问—FinalShell 1.6 本章小结 1.7 本章习题 第2章 Linux操作系统常用命令工具 2.1 用户和用户组管理命令 2.1.1 用户和用户组 2.1.2 用户管理命令 2.1.3 用户组管理命令 2.1.4 用户切换命令 2.1.5 用户权限提升命令 2.2 文件管理的相关概念和命令 2.2.1 Linux文件系统 2.2.2 Linux目录结构 2.2.3 Linux文件类型 2.2.4 目录管理命令 2.2.5 文件查找命令 2.2.6 文件内容显示命令 2.2.7 文件复制、移动、删除 2.2.8 压缩解压命令 2.2.9 权限管理 2.3 软件管理命令 2.3.1 RPM 2.3.2 DNF 2.4 进程管理命令 2.4.1 进程查看命令 2.4.2 进程终止命令 2.4.3 服务管理 2.5 网络管理与通信命令 2.5.1 ping 2.5.2 ssh 2.5.3 ip 2.6 帮助命令 2.6.1 man 2.6.2 info 2.7 vim编辑器 2.7.1 vim编辑器基本操作 2.7.2 vim编辑器工作模式 2.8 本章小结 2.9 本章习题 第3章 Shell编程 3.1 Shell脚本的创建与执行 3.2 Shell变量 3.2.1 用户自定义变量 3.2.2 环境变量 3.2.3 位置变量 3.2.4 预定义变量 3.3 Shell的输入输出 3.3.1 read命令与echo命令 3.3.2 标准I/O与重定向 3.4 Shell中的特殊符号 3.4.1 引号 3.4.2 通配符 3.4.3 连接符 3.4.4 管道 3.5 数值运算 3.5.1 let命令 3.5.2 $(()) 3.5.3 expr命令 3.6 Shell条件语句 3.6.1 条件判断 3.6.2 if条件语句 3.6.3 case语句 3.7 Shell循环语句 3.7.1 for循环语句 3.7.2 while循环语句 3.7.3 until循环语句 3.7.4 select语句 3.8 Shell函数 3.8.1 函数的定义与调用 3.8.2 函数中的变量 3.9 Shell数组 3.10 本章小结 3.11 本章习题 第4章 Linux C编译调试环境 4.1 GCC编译工具 4.1.1 GCC简介 4.1.2 gcc命令 4.2 GDB调试工具 4.2.1 GDB简介 4.2.2 gdb调试实例 4.3 make工具 4.3.1 引入make工具 4.3.2 Makefile文件中的伪目标 4.3.3 Makefile文件中的变量 4.3.4 Makefile文件的隐式规则 4.4 本章小结 4.5 本章习题 第5章 文件I/O操作 5.1 文件概述 5.1.1 文件存储方式 5.1.2 文件描述符 5.2 文件基本操作 5.2.1 文件的创建与删除 5.2.2 文件的打开与关闭 5.2.3 文件读写 5.2.4 文件定位 5.2.5 文件移动 5.3 文件属性操作 5.3.1 文件属性概述 5.3.2 获取文件属性 5.3.3 检测文件权限 5.3.4 修改文件权限 5.3.5 修改文件属主和属组 5.4 目录基本操作 5.4.1 目录的创建与删除 5.4.2 获取当前工作目录 5.4.3 切换当前工作目录 5.4.4 目录的打开与关闭 5.4.5 目录的读取 5.4.6 目录的定位 5.5 文件I/O重定向 5.6 文件I/O错误处理 5.7 本章小结 5.8 本章习题 第6章 Linux进程管理 6.1 进程概述 6.1.1 进程的概念 6.1.2 进程的状态 6.1.3 进程的结构 6.2 获取进程属性 6.3 进程控制 6.3.1 创建进程 6.3.2 exec系列函数 6.3.3 进程休眠 6.4 进程终止 6.5 僵尸进程与孤儿进程 6.5.1 僵尸进程 6.5.2 孤儿进程 6.6 进程等待 6.5.1 wait()函数 6.5.2 waitpid()函数 6.7 守护进程 6.8 本章小结 6.9 本章习题 第7章 信号 7.1 信号概述 7.1.1 信号的概念及分类 7.1.2 信号的生命周期 7.2 信号发送 7.2.1 kill()函数 7.2.2 raise()函数 7.2.3 alarm()函数 7.3 信号自定义处理 7.3.1 signal()函数 7.3.2 signal()函数缺陷 7.3.3 sigaction()函数 7.4 信号集 7.4.1 信号集与操作函数 7.4.2 信号屏蔽 7.4.3 获取悬挂信号 7.5 等待指定信号 7.6 利用SIGCHLD信号回收子进程 7.7 本章小结 7.8 本章习题 第8章 进程间通信 8.1 进程间通信概述 8.2 管道 8.2.1 管道概述 8.2.2 无名管道 8.2.3 命名管道 8.2.4 popen()和pclose() 8.3 消息队列 8.3.1 消息队列概述 8.3.2 消息队列相关函数 8.3.3 消息队列通信实例 8.4 共享内存 8.4.1 共享内存概述 8.4.2 共享内存相关函数 8.4.3 共享内存通信实例 8.5 信号量 8.5.1 信号量概述 8.5.2 信号量相关函数 8.5.3 信号量通信实例 8.6 本章小结 8.7 本章习题 第9章 线程 9.1 线程概述 9.2 线程基本操作 9.2.1 获取线程ID 9.2.2 线程创建 9.2.3 线程退出 9.2.4 线程挂起 9.2.5 线程分离 9.2.6 线程取消 9.2.7 线程取消状态设置 9.3 线程属性 9.3.1 线程属性对象的初始化与销毁 9.3.2 线程状态 9.3.3 线程调度策略 9.3.4 线程调度参数 9.3.5 线程继承性 9.3.6 线程作用域 9.3.7 线程栈 9.3.8 线程属性设置实例 9.4 线程并发 9.5 线程同步 9.5.1 互斥锁实现线程同步 9.5.2 条件变量实现线程同步 9.5.3 信号量实现线程同步 9.6 本章小结 9.7 本章习题 第10章 socket编程 10.1 socket简介 10.1.1 socket通信过程 10.1.2 socket地址结构 10.1.3 socket属性 10.2 socket通信基础知识 10.2.1 字节序 10.2.2 IP地址转换 10.3 socket通信流程 10.4 socket编程接口 10.4.1 socket() 10.4.2 bind() 10.4.3 listen() 10.4.4 connect() 10.4.5 accept() 10.4.6 send() 10.4.7 recv() 10.4.8 close() 10.5 socket网络实例 10.5.1 C/S模型-TCP通信 10.5.2 C/S模型-UDP通信 10.6 本章小结 10.7 本章习题 第11章 并发服务器 11.1 多进程并发服务器 11.2 多线程并发服务器 11.3 I/O多路复用 11.3.1 I/O多路复用简介 11.3.2 select模型 11.3.3 poll模型 11.3.4 epoll模型 11.3.5 epoll工作模式 11.4 本章小结 11.5 本章习题