Linux C编程从初学到精通

2019-08-05 23 0 举报/投诉

Linux C编程从初学到精通

《Linux C编程从初学到精通》是2011年4月电子工业出版社出版的图书,作者是张繁。

基本介绍

  • 书名:Linux C编程从初学到精通
  • 作者:张繁
  • ISBN:978-7-121-12804-2
  • 页数:548页
  • 定价:69.00元(含DVD光碟1张)
  • 出版时间:2011年4月
  • 开本:16开

宣传语

深入浅出,依靠深厚行业经验讲透技术原理循序渐进,详解典型套用案例提升实战能力

内 容 简 介

本书深入浅出、循序渐进地讲解了Linux平台下的C程式设计,并通过大量的程式实例,以及综合开发案例的演示,帮助读者快速掌握Linux下C语言编程的方法和技巧。本书内容翔实,共分为三大部分。第一部分为基础篇,共有5章,主要讲解了Linux系统的概述、C语言编程基础、Linux下的两种常用文本编辑器vi和Emacs、程式编译器gcc和调试器gdb,以及make管理工具。第二部分为提高篇,共有7章,主要讲解了Linux系统下各种操作的系统调用,包括档案操作、进程控制、进程间通信、网路编程、GTK+图形界面编程等。第三部分为实践篇,共有5章,分别为5个不同的Linux平台下C程式开发的综合案例,向读者详细阐述了Linux档案操作、GTK+图形界面编程、Linux网路编程,以及基于Linux平台的嵌入式软体开发的方法和技巧。本书是由作者根据多年来的开发工作经验编着而成,语言通俗易懂,内容丰富,注重实例讲解,知识涵盖面广。非常适合Linux平台下C语言编程的初学者以及高校本科生、研究生阅读,也适合在Linux系统下进行C程式开发的工程师查阅和学习。

前 言

Linux诞生于1991年,由UNIX发展而来。几乎每天Linux都会以某种方式出现在我们的生活中,我们已经数不清在Linux上有多少应用程式,以及有多少机构在使用Linux。国内外无数大型企业都在使用Linux系统作为伺服器解决方案,尤其是在嵌入式开发领域,Linux的套用更是在不断增加。在百度上搜寻“Linux 软体工程师”的相关网页约有1,230,000篇,由此可见,在Linux平台下进行程式开发的需求之大。作者根据自己多年来在Linux下进行C程式开发所积累的经验,并融合大量的程式实例而着成此书。本书由浅入深,适合各个水平阶段的读者学习。

本书特点

1.配套视频讲解光碟为了让读者更加快速、直观地学习本书内容,作者专门为本书录製了全程多媒体视频教学,包括各个技术知识点,以及程式案例的分析。结合视频的讲解,能够帮助读者更高效地掌握Linux下C编程的技巧与方法。2.循序渐进,由浅入深从Linux系统的安装、C语言编程基础、Linux下的基本编辑器、程式编译器和调试器、make工具管理器,到Linux系统的各种函式调用,再到Linux下具体程式案例的设计开发,本书内容由浅入深,囊括了Linux下C程式开发的各个环节。3.程式实例丰富,实践性强在本书中,几乎每个知识点都会伴随一个或多个程式实例,通过实例来加深和巩固读者对知识点的理解和掌握。对于每个程式实例,作者都添加了十分详细的注释,方便读者理解。并且,所有的实例读者都可以在自己的实验环境中完整实现。尤其是第3部分的五个项目案例,更是完整地向读者演示了Linux环境下项目实例的设计与开发。4.技术全面,知识点阐述到位网路编程和图形界面编程是C程式学习中比较深入的知识,也是本书重点讲解的内容。在第3部分,我们将这些知识点与实际的项目开发结合,通过逐步设计与实现,深化和巩固读者对它们的理解与掌握。将Linux系统开发技术、C语言开发技术、软体工程思想融会贯通,使得本书成为思想和内容都极其丰富的计算机教程。

本书内容

第1章:介绍Linux系统的基本概念和安装方法,Linux下的常用命令,以及Shell的使用。这些是使用Linux的基础,帮助读者为本书后续的学习打下扎实的基础。第2章:详细讲述了C语言的编程基础,它们是熟悉和掌握这些信息与学习C语言的必经之路,同时也方便了读者在阅读本书时查阅C语言中的相关知识点。第3章:讲述Linux下最常用的两种文本编辑器vi和Emacs,通过实例套用讲解让读者一步一步地学会如何使用这些编辑器的使用。第4章:讲解Linux系统下的程式编译器gcc和程式调试器gdb,二者是在Linux下进行C程式开发所必备的工具。第5章:讲述Linux下的工程管理器make,以及Makefile的书写规则。make工具大大提高了实际项目的工作效率,几乎所有Linux下的项目编程都会涉及它。第6章:讲解基于档案描述符的档案I/O操作,以及Linux中档案系统的概念。档案操作是Linux系统中最常见的操作之一,在Linux中,所有的内容都被看成档案,所有的操作都可以归结为对档案的操作。第7章:讲述基于流的档案I/O操作。基于流的I/O操作是由标準C函式馆提供的,与基于档案描述符的I/O操作相比,基于流的I/O更简单、方便。在大多数情况下,程式设计师更愿意使用基于流的输入输出方法。第8章:详细阐述了Linux下进程控制的原理。进程是作业系统中一个非常重要的概念,熟悉使用进程的操作和进程控制的相关係统调用,会使用户在使用Linux系统完成各种工作时更加得心应手。第9章:讲解Linux信号的基本概念,以及Linux下信号处理的机制。信号的使用对于灵活使用C语言在Linux环境下进行程式开发是非常有益的,在编写大型的程式时,经常会需要处理多个进程之间的异步事件,所以是离不开信号的使用的。第10章:详细讲述了Linux进程间通信的概念,以及Linux下5中最常用的进程间通信方式,它们包括:管道、命名管道、讯息伫列、共享记忆体、信号量等。第11章:详细讲述了Linux网路编程的原理与方法,通过大量的程式实例演示了Socket编程中常用API的使用方法。第12章:讲述GTK+图形界面编程。GTK+是Linux下基于C的图形界面开发库,通过程式实例向读者演示了使用GTK+库创建各种界面元件的方法。第13章:通过讲述一个计算器软体的设计案例,进一步向读者演示图形界面编程的技巧,以及GTK+信号与回调函式的原理。第14章:通过设计一个类似于QQ的聊天软体,向读者演示了小型项目工程软体的模组划分方法,以及Linux下的C程式开发的步骤。使读者能够更深层次地掌握GTK+图形界面编程,以及Linux网路编程的原理方法。
第15章:讲述Linux下一种基于C/S模式实现的远程管理工具的设计。使读者对Linux下的档案I/O操作、相关係统服务的管理有更深层次的了解和认识,并进一步掌握GTK+图形界面编程,套接字Socket网路编程的使用方法。第16章:讲述了在Linux-2.4.20-8核心下利用Netfilter数据控制过滤机制完成简易防火墙软体的设计,实现了对固定连线埠、网页访问,以及不同协定类型的数据报文的管理和控制。第17章:讲述基于Linux的嵌入式家庭网关远程互动操作平台的设计。向读者阐述了嵌入式系统,以及家庭网关的概念,採用B/S结构的开发模式,嵌入式Web伺服器选取Boa,并结合CGI技术,实现了动态的具体智慧型设备的访问和控制。本书适合的读者: Linux及C程式设计初学者。 大中专院校计算机及相关专业的学生。 高校计算机及相关专业本科生、研究生。 Linux软体开发从业人员。 开源软体开发爱好者。 社会培训学生。最后,我要感谢我的家人及好友陈曦在我最困难的时候带给我快乐与动力,支持我一直坚持下来,并最终完成这部着作。本书主要由张繁主持编写,参加本书编写工作的还有高淑娟、王丽娜、周毅、林小峰、刘刚、马海波、李强、吴慧、马玉刚、冯浩、唐爱琴、李子龙、王明明、蒋志等,在此,编者对以上人员致以诚挚的谢意!作者力图使本书案例功能翔实,并儘量使用关键编程技术进行程式设计和简化程式代码。但由于水平有限,书中难免有错误、纰漏之处,欢迎广大读者、同仁批评斧正。编着者

目 录

第1部分 基础篇第1章 Linux系统概述 11.1 什幺是Linux 21.2 Linux系统特点及主要功能 21.2.1 Linux系统特点 31.2.2 Linux系统的主要功能 31.3 Linux的核心版本和发行版本 51.4 系统的安装 61.4.1 系统安装前的準备工作 61.4.2 从光碟安装Linux 61.4.3 从硬碟安装Linux 221.4.4 在虚拟机下安装Linux 221.5 Shell的使用 271.5.1 Shell简介 271.5.2 常见Shell的种类 281.5.3 Shell的简单使用 291.5.4 通配符 301.5.5 引号 311.5.6 注释符 331.6 Linux常用命令 331.6.1 与目录相关的命令 331.6.2 与档案相关的命令 341.6.3 与网路服务相关的命令 351.7 本章小结 35实战演练 36第2章 C语言编程基础 372.1 C语言的历史背景 38
2.2 C语言的特点 382.3 C语言的基本数据类型 392.3.1 整型 392.3.2 实型 402.3.3 字元型 412.4 运算符与表达式 432.4.1 算术运算符与算术表达式 432.4.2 赋值运算符与赋值表达式 442.4.3 逗号运算符与逗号表达式 452.5 C程式的3种基本结构 462.5.1 顺序结构 462.5.2 选择结构 472.5.3 循环结构 512.6 C语言中的数据输入与输出 542.6.1 字元输出函式putchar 542.6.2 字元输入函式getchar 542.6.3 格式输出函式printf 542.6.4 格式输入函式scanf 562.7 函式 572.7.1 函式的定义 572.7.2 函式的调用 582.7.3 变数的存储类别 592.8 数组 622.8.1 一维数组的定义和使用 632.8.2 二维数组的定义和使用 642.8.3 字元数组和字元串 652.8.4 常用字元串处理函式 662.9 指针 692.9.1 地址和指针 692.9.2 指针的定义和使用 702.9.3 数组与指针 712.9.4 字元串与指针 722.9.5 指向函式的指针 722.10 结构体和共用体 732.10.1 定义和引用结构体 732.10.2 结构体数组 742.10.3 指向结构体的指针 742.10.4 共用体 752.10.5 使用typedef定义类型 772.11 鍊表 772.11.1 鍊表概述 772.11.2 建立动态单向鍊表 782.11.3 单向鍊表的输出 802.11.4 对单向鍊表的删除操作 802.11.5 对单向鍊表的插入操作 812.11.6 循环鍊表 822.11.7 双向鍊表 822.12 位运算符和位运算 832.12.1 “按位与”运算符(&) 842.12.2 “按位或”运算符(|) 842.12.3 “取反”运算符(~) 842.12.4 “异或”运算符(^) 842.12.5 移位运算符(<<和>>) 852.12.6 位域 852.13 C语言预处理命令 862.13.1 宏定义 862.13.2 档案包含 872.13.3 条件编译 882.13.4 #error等其他常用预处理命令 892.14 本章小结 89实战演练 89
第3章 vi与Emacs编辑器 913.1 vi的使用 923.1.1 启动与退出vi 923.1.2 vi的命令行模式 933.1.3 vi的插入模式 963.1.4 vi的底行模式 963.2 vi使用实例 973.3 Emacs的使用 1003.3.1 启动与退出Emacs 1013.3.2 Emacs下的基本操作 1023.4 Emacs使用实例 1073.5 本章小结 109实战演练 109第4章 gcc编译器与gdb调试器 1104.1 gcc编译器简介 1114.2 如何使用gcc 1124.2.1 gcc编译初步 1124.2.2 警告提示功能 1144.2.3 最佳化gcc 1164.2.4 连线库 1194.2.5 同时编译多个源程式 1204.2.6 管道 1204.2.7 调试选项 1214.3 gdb调试器 1224.3.1 gdb简介 1224.3.2 gdb常用命令 1234.3.3 gdb调试初步 1244.4 gdb的使用详解 1264.4.1 调用gdb 1274.4.2 使用断点 1274.4.3 查看运行时数据 1294.4.4 查看源程式 1334.4.5 改变程式的执行 1354.5 xxgdb调试器简介 1384.6 本章小结 139实战演练 139第5章 make的使用和Makefile的编写 1415.1 什幺是make 1425.1.1 make机制概述 1425.1.2 make与Makefile的关係 1445.2 Makefile的书写规则 1475.2.1 Makefile的基本语法规则 1485.2.2 在规则中使用通配符 1495.2.3 伪目标 1495.2.4 多目标 1515.2.5 自动生成依赖性 1515.3 Makefile的命令 1525.4 变数 1545.4.1 变数的基础 1545.4.2 赋值变数 1545.4.3 define关键字 1565.4.4 override指示符 1565.4.5 目标变数和模式变数 1575.5 常用函式调用 1585.5.1 字元串处理函式 1585.5.2 档案名称操作函式 1625.5.3 循环函式 1645.5.4 条件判断函式 1655.5.5 其他常用函式 1665.6 隐式规则 1685.6.1 隐式规则举例 1685.6.2 隐式规则中的变数 1695.6.3 使用模式规则 1705.7 本章小结 173实战演练 173第2部分 提高篇第6章 档案I/O操作 174
6.1 Linux档案系统简介 1756.1.1 Linux的档案系统结构 1756.1.2 档案类型 1766.1.3 档案访问许可权 1796.2 基于档案描述符的I/O操作 1796.2.1 档案描述符 1806.2.2 标準输入、标準输出和标準出错 1806.2.3 档案重定向 1816.2.4 档案的创建、打开与关闭 1826.2.5 档案的定位 1866.2.6 档案的读写 1886.3 档案的属性操作 1926.3.1 改变档案访问许可权 1926.3.2 改变档案所有者 1936.3.3 重命名 1936.3.4 修改档案长度 1946.4 档案的其他操作 1956.4.1 stat、fstat和lstat函式 1956.4.2 dup和dup2函式 1966.4.3 fcntl函式 1976.4.4 sync和fsync函式 1976.5 特殊档案的操作 1986.5.1 目录档案的操作 1986.5.2 连结档案的操作 2016.5.3 管道档案的操作 2046.5.4 设备档案 2046.6 本章小结 205实战演练 205第7章 基于流的I/O操作 2067.1 流与快取 2077.1.1 流和FILE对象 2077.1.2 标準输入、标準输出和标準出错 2077.1.3 快取 2077.1.4 对快取的操作 2107.2 流的打开与关闭 2127.2.1 流的打开 2127.2.2 流的关闭 2147.2.3 流关闭前的工作 2167.3 流的读写 2167.3.1 基于字元的I/O 2177.3.2 基于行的I/O 2207.3.3 直接I/O 2227.3.4 格式化I/O 2247.4 本章小结 226实战演练 227第8章 进程控制 2288.1 进程的基本概念 2298.1.1 Linux进程简介 2298.1.2 进程与作业 2308.1.3 进程标识 2308.2 进程控制的相关函式 2328.2.1 fork和vfork函式 2328.2.2 exec函式 2378.2.3 exit和_exit函式 2428.2.4 wait和waitpid函式 2458.2.5 进程的一生 2518.2.6 用户ID和组ID 2518.2.7 system函式 2538.3 多个进程间的关係 2558.3.1 进程组 2558.3.2 会话期 2568.3.3 控制终端 2578.4 本章小结 259实战演练 259第9章 信号 2609.1 Linux信号简介 2619.1.1 信号的基本概念 261
9.1.2 信号处理机制 2659.2 信号操作的相关函式 2679.2.1 信号的处理 2679.2.2 信号的传送 2749.2.3 信号的阻塞 2829.2.4 计时器与信号 2849.3 本章小结 286实战演练 287第10章 进程间通信 28810.1 进程间通信简介 28910.2 管道 29010.2.1 管道的概念 29010.2.2 管道的创建与关闭 29110.2.3 管道的读写 29210.3 命名管道 29710.3.1 命名管道的概念 29710.3.2 命名管道的创建 29710.3.3 命名管道的读写 29910.4 讯息伫列 30310.4.1 讯息伫列的概念 30310.4.2 讯息伫列的创建与打开 30510.4.3 讯息伫列的读写 30610.4.4 获得或设定讯息伫列属性 30810.5 共享记忆体 31210.5.1 共享记忆体的概念 31210.5.2 共享记忆体的相关操作 31310.6 信号量 31810.6.1 信号量的概念 31910.6.2 信号量集的相关操作 32010.7 本章小结 325实战演练 326第11章 网路编程 32711.1 网路编程的基础知识 32811.1.1 计算机网路体系结构 32811.1.2 传输控制协定TCP 33311.1.3 用户数据报协定UDP 33511.1.4 客户机/伺服器模式 33611.2 套接口编程基础 33611.2.1 什幺是套接口 33711.2.2 连线埠号的概念 33811.2.3 套接口的数据结构 33811.2.4 基本函式 34011.3 TCP套接口编程 34311.3.1 TCP套接口通信工作流程 34311.3.2 TCP套接口Client/Server程式实例 35611.4 UDP套接口编程 36011.4.1 UDP套接口通信工作流程 36011.4.2 UDP套接口Client/Server程式实例 36211.5 原始套接口编程 36511.5.1 原始套接口的创建 36511.5.2 原始套接口程式实例 36511.6 本章小结 376实战演练 376第12章 Linux图形界面编程 37712.1 Linux下的图形界面编程简介 37812.1.1 Qt简介 37812.1.2 GTK+简介 37812.2 界面基本元件 38112.2.1 一个简单的例子 38112.2.2 视窗 38312.2.3 标籤 38512.2.4 按钮 386
12.2.5 文本框 38712.3 界面布局元件 38912.3.1 表格 39012.3.2 框 39312.3.3 窗格 39512.4 其他常用元件 39812.4.1 进度条、微调按钮、组合框 39812.4.2 单选按钮、複选按钮 40212.4.3 下拉选单 40412.5 信号与回调函式 40612.6 本章小结 409实战演练 409第3部分 实战篇第13章 设计Linux下的计算器 41113.1 软体功能分析 41213.2 程式模组的划分 41313.3 软体的具体实现 41513.3.1 头档案 41513.3.2 十六进制界面显示函式 41613.3.3 十进制界面显示函式 41713.3.4 八进制界面显示函式 41813.3.5 二进制界面显示函式 41913.3.6 进制间转换函式 42013.3.7 信号处理模组 42313.3.8 主函式 43213.4 软体使用效果演示 43813.5 本章小结 439第14章 Linux平台下聊天软体的设计 44014.1 软体功能概述 44114.1.1 伺服器端功能需求 44114.1.2 客户端功能需求 44214.1.3 错误处理需求 44214.2 Glade集成开发工具简介 44314.3 软体功能模组划分 44414.3.1 伺服器功能模组划分 44414.3.2 客户端功能模组划分 44514.3.3 讯息标识的定义 44514.3.4 讯息结构体的设计 44614.4 伺服器程式的具体实现 44714.4.1 伺服器讯息处理流程 44714.4.2 伺服器主要函式和变数 44814.4.3 伺服器讯息处理模组的设计与实现 44914.4.4 伺服器数据存储的方法 45014.4.5 用户注册流程 45014.5 客户端程式的具体实现 45114.5.1 客户端操作流程 45114.5.2 客户端传送和接收讯息流程 45114.5.3 客户端主要函式和变数 45214.5.4 客户端功能模组的设计与实现 45314.6 聊天软体使用效果演示 45514.7 本章小结 459第15章 Linux远程管理工具的设计 46015.1 软体功能概述 46115.1.1 Webmin简介 46115.1.2 软体总体设计 461
15.2 伺服器端程式设计 46315.2.1 伺服器端工作流程 46315.2.2 系统用户管理操作 46415.2.3 系统用户组的管理操作 46615.2.4 系统服务启动管理 46815.2.5 DNS管理操作 46915.2.6 Apache服务管理操作 47115.2.7 FTP服务管理操作 47415.3 客户端程式 47515.3.1 连线界面 47515.3.2 主界面 47715.4 本章小结 479第16章 Linux下简易防火墙软体的设计 48016.1 Netfilter基础 48116.1.1 什幺是Netfilter 48116.1.2 Netfilter的HOOK机制 48216.1.3 HOOK的调用 48516.1.4 HOOK的实现 48616.1.5 IPTables简介 48816.1.6 Netfilter可以实现的控制功能 48916.2 软体设计概述 49116.2.1 软体整体框架 49116.2.2 管理端的设计 49216.2.3 控制端的设计 49316.3 用Netfilter设计控制端功能模组 49516.3.1 ICMP管理控制模组 49516.3.2 FTP管理控制模组 49716.3.3 HTTP管理控制模组 49916.3.4 模组的编译、载入与卸载 49916.4 软体功能测试 50116.5 本章小结 503第17章 基于Linux的嵌入式家庭网关远程互动操作平台的设计 50417.1 嵌入式技术简介 50517.1.1 嵌入式系统的概念 50517.1.2 嵌入式作业系统 50617.1.3 嵌入式处理器 50717.2 家庭网关的概念及其网路体系结构 50917.2.1 智慧型家庭网路的概念 50917.2.2 家庭网关的远程互动操作技术简介 51017.2.3 嵌入式家庭网关的网路体系结构 51017.3 嵌入式家庭网关的开发平台 51117.3.1 S3C2410微处理器简介 51117.3.2 交叉编译环境的建立 51317.4 远程互动平台的设计 51517.4.1 套用软体的开发模式 51517.4.2 嵌入式Web伺服器 51617.4.3 通用网关接口CGI 51917.5 Linux下软体模组的具体实现 52017.5.1 登录验证模组 52117.5.2 串口通信模组 521
17.5.3 中央空调控制模组 52217.5.4 智慧型水錶数据採集模组 52817.5.5 试验结果 52817.6 本章小结 529

相关文章

财务经理财务
美乐地
联合国欧洲本部
外来农民工
龙吻0
达卡(孟加拉国首都和第一大城市)

发布评论