
作者:叶茂
页数:464
出版社:电子工业出版社
出版日期:2014
ISBN:9787121222498
电子书格式:pdf/epub/txt
内容简介
从最基本的linux c开发工具和程序讲起,循序渐进;
? 以大量的案例介绍linux c编程技术和方法,实践与理论结合紧密;
? 结合综合性案例演示实际项目开发过程,夯筑实战基础;
作者简介
张繁,毕业于武汉邮电科学研究院研究生部,熟悉UNIX/Linux,?CLinux,熟悉Linux下的各种开发工具(vi、gcc、gdb、make等)、Linux系统架构、进程管理、进程通信、网络配置等,以及Linux下的C程序开发,曾经参与过多个校、公司和省科研项目,有丰富的一线开发经验。
本书特色
本书以fedora 14为平台,深入浅出、循序渐进的讲解了linux操作系统下的c语言程序设计,并通过大量的程序实例,以及综合开发案例的演示,帮助读者快速掌握linux下c语言编程的方法和技巧。本书内容翔实,包括linux系统简介、shell编程、linux c开发环境、linux下常用c库函数、进程管理、线程管理、基于文件描述法的i/o操作、基于流的i/o操作、套接字编程、数据库编程、gtk+图形界面开发等等,并结合两个具体的项目案例,详细介绍了linux平台下c程序开发的方法和技巧。
目录
目 录<br>
<br>
第1章 linux初识 1<br>
1.1 了解linux 1<br>
1.1.1 什么是linux 1<br>
1.1.2 gnu与linux 2<br>
1.1.3 linux系统的特点 3<br>
1.1.4 linux的内核版本与发行版本 3<br>
1.1.5 本书使用的linux 4<br>
1.2 安装linux 4<br>
1.2.1 系统安装前的准备工作 5<br>
1.2.2 从光盘安装linux 5<br>
1.2.3 从硬盘安装linux 22<br>
1.2.4 在虚拟机下安装linux 23<br>
1.3 linux常用命令 28<br>
1.3.1 shell终端 28<br>
1.3.2 与目录相关的命令 29<br>
1.3.3 与文件相关的命令 29<br>
1.3.4 与网络服务相关的命令 31<br>
1.4 本章小结 31<br>
上机题 32<br>
第2章 shell编程 33<br>
2.1 shell简介 33<br>
2.1.1 关于shell 33<br>
2.1.2 shell的使用 34<br>
2.1.3 常见shell的种类 36<br>
2.2 shell基本语法 38<br>
2.2.1 变量 38<br>
2.2.2 通配符 43<br>
2.2.3 引号 44<br>
2.2.4 注释符 46<br>
2.3 选择结构 46<br>
2.3.1 test命令 46<br>
2.3.2 if语句 49<br>
2.3.3 if…else语句 49<br>
2.3.4 if…elif语句 50<br>
2.3.5 case语句 52<br>
2.4 循环结构 54<br>
2.4.1 for语句 54<br>
2.4.2 while语句 56<br>
2.4.3 until语句 58<br>
2.4.4 异常退出循环 58<br>
2.5 函数 61<br>
2.5.1 定义函数 61<br>
2.5.2 交互式shell中定义和使用函数 62<br>
2.5.3 shell脚本中定义和使用函数 62<br>
2.5.4 将函数定义在单独的文件中 64<br>
2.6 本章小结 65<br>
上机题 65<br>
第3章 linux c开发环境 67<br>
3.1 c编辑器 67<br>
3.1.1 vi 67<br>
3.1.2 gedit 72<br>
3.1.3 kwrite 74<br>
3.1.4 kate 75<br>
3.2 程序编译器gcc 78<br>
3.2.1 gcc简介 78<br>
3.2.2 gcc编译初步 79<br>
3.2.3 警告提示功能 81<br>
3.2.4 优化gcc 82<br>
3.2.5 连接库 86<br>
3.2.6 调试选项 87<br>
3.3 程序调试器gdb 88<br>
3.3.1 gdb简介 88<br>
3.3.2 gdb调试初步 90<br>
3.3.3 使用断点 92<br>
3.3.4 查看运行时数据 97<br>
3.3.5 查看源程序 103<br>
3.3.6 改变程序的执行 105<br>
3.4 本章小结 109<br>
上机题 110<br>
第4章 linux下常用c库函数 112<br>
4.1 使用库函数的优势 112<br>
4.2 内存操作相关 114<br>
4.2.1 malloc函数 115<br>
4.2.2 calloc函数 115<br>
4.2.3 free函数 117<br>
4.2.4 memset函数 118<br>
4.2.5 memcpy函数 123<br>
4.2.6 memmove函数 125<br>
4.3 数字与字符串间的转换 126<br>
4.3.1 字符串转换为整型 126<br>
4.3.2 字符串转换为实型 129<br>
4.3.3 整型转换为字符串 130<br>
4.3.4 实型转换为字符串 132<br>
4.4 日期与时间 135<br>
4.5 随机函数 138<br>
4.6 本章小结 142<br>
上机题 143<br>
第5章 进程管理 144<br>
5.1 进程概述 144<br>
5.1.1 linux进程简介 144<br>
5.1.2 task_struct结构 146<br>
5.2 进程管理 150<br>
5.2.1 获得进程id 151<br>
5.2.2 创建进程 152<br>
5.2.3 进程执行 159<br>
5.2.4 进程消亡 163<br>
5.2.5 进程等待 167<br>
5.2.6 system函数 173<br>
5.2.7 进程组与会话 175<br>
5.3 进程调度机制 177<br>
5.4 本章小结 180<br>
上机题 180<br>
第6章 线程管理 182<br>
6.1 线程概述 182<br>
6.2 线程的基本操作 183<br>
6.2.1 创建线程 183<br>
6.2.2 线程等待 186<br>
6.2.3 线程终止 187<br>
6.2.4 线程属性 189<br>
6.3 线程同步 193<br>
6.3.1 互斥锁 193<br>
6.3.2 条件变量 198<br>
6.3.3 信号量 203<br>
6.4 本章小结 207<br>
上机题 208<br>
第7章 基于文件描述符的i/o操作 209<br>
7.1 linux文件系统 209<br>
7.1.1 文件系统结构 209<br>
7.1.2 文件类型 210<br>
7.1.3 文件访问权限 213<br>
7.1.4 数据结构 214<br>
7.2 文件i/o操作 216<br>
7.2.1 文件的创建、打开与关闭 217<br>
7.2.2 文件的定位 221<br>
7.2.3 文件的读/写 224<br>
7.3 文件属性操作 228<br>
7.3.1 改变文件访问权限 228<br>
7.3.2 改变文件所有者 229<br>
7.3.3 重命名 230<br>
7.4 文件的其他操作 233<br>
7.4.1 stat()、fstat()和lstat()函数 233<br>
7.4.2 dup()和dup2()函数 235<br>
7.4.3 fcntl()函数 236<br>
7.4.4 sync()和fsync()函数 236<br>
7.5 特殊文件的操作 237<br>
7.5.1 目录文件 237<br>
7.5.2 链接文件 241<br>
7.5.3 管道文件 244<br>
7.5.4 设备文件 246<br>
7.6 本章小结 246<br>
上机题 246<br>
第8章 基于流的i/o操作 248<br>
8.1 流与缓存 248<br>
8.1.1 流和file对象 248<br>
8.1.2 缓存 250<br>
8.1.3 设置缓存 251<br>
8.2 流的打开与关闭 255<br>
8.2.1 流的打开 255<br>
8.2.2 流的关闭 257<br>
8.2.3 注意fclose 259<br>
8.3 流i/o操作 260<br>
8.3.1 字符i/o 260<br>
8.3.2 行i/o 264<br>
8.3.3 直接i/o 267<br>
8.3.4 格式化i/o 270<br>
8.4 本章小结 273<br>
上机题 273<br>
第9章 套接字编程 274<br>
9.1 套接字编程基础 274<br>
9.1.1 套接字概述 274<br>
9.1.2 套接字数据结构 276<br>
9.1.3 基础函数 279<br>
9.2 tcp套接字编程 285<br>
9.2.1 tcp套接字原理 285<br>
9.2.2 tcp套接字函数 286<br>
9.2.3 tcp套接字client/server程序实例 299<br>
9.3 udp套接字编程 304<br>
9.3.1 udp套接字原理 304<br>
9.3.2 udp数据发送与接收 305<br>
9.3.3 udp套接字client/server程序实例 305<br>
9.4 多客户模型 309<br>
9.4.1 循环服务器 309<br>
9.4.2 并发服务器 310<br>
9.4.3 多路复用i/o 311<br>
9.5 本章小结 319<br>
上机题 320<br>
第10章 linux数据库编程 321<br>
10.1 linux数据库简介 321<br>
10.1.1 数据库的基本概念 321<br>
10.1.2 关系型数据库 322<br>
10.1.3 linux下的常用数据库 324<br>
10.2 mysql的使用 326<br>
10.2.1 安装mysql 326<br>
10.2.2 mysql的常用操作 331<br>
10.3 数据库编程 334<br>
10.3.1 数据结构 334<br>
10.3.2 函数api 338<br>
10.3.3 一个简易的员工信息管理系统 353<br>
10.4 本章小结 358<br>
上机题 358<br>
第11章 gtk+图形界面开发 359<br>
11.1 linux图形界面开发简介 359<br>
11.1.1 linux图形界面环境 359<br>
11.1.2 gtk+简介 360<br>
11.2 基本控件 363<br>
11.2.1 窗口 363<br>
11.2.2 标签 368<br>
11.2.3 按钮 369<br>
11.2.4 文本框 371<br>
11.3 布局控件 378<br>
11.3.1 表格 378<br>
11.3.2 框 382<br>
11.3.3 窗格 383<br>
11.4 其他高级控件 385<br>
11.4.1 进度条、微调按钮、组合框 385<br>
11.4.2 单选按钮、复选按钮 390<br>
11.4.3 下拉菜单 392<br>
11.5 gtk+信号与事件 394<br>
11.6 本章小结 398<br>
上机题 398<br>
第12章 设计一款linux下的小游戏 400<br>
12.1 游戏简介 400<br>
12.2 程序模块划分 403<br>
12.2.1 初始化模块 403<br>
12.2.2 对话框显示模块 405<br>
12.2.3 游戏主模块 408<br>
12.3 游戏效果演示 426<br>
12.4 本章小结 427<br>
第13章 设计linux下的学生信息管理系统 428<br>
13.1 软件功能简介 428<br>
13.2 程序模块划分 429<br>
13.2.1 数据库设计 429<br>
13.2.2 用户登录 436<br>
13.2.3 学生查询界面 441<br>
13.2.4 教师查询界面 443<br>
13.2.5 管理员查询界面 445<br>
13.2.6 makefile文件 448<br>
13.3 软件运行效果演示 448<br>
13.4 本章小结 452<br>
<br>
第1章 linux初识 1<br>
1.1 了解linux 1<br>
1.1.1 什么是linux 1<br>
1.1.2 gnu与linux 2<br>
1.1.3 linux系统的特点 3<br>
1.1.4 linux的内核版本与发行版本 3<br>
1.1.5 本书使用的linux 4<br>
1.2 安装linux 4<br>
1.2.1 系统安装前的准备工作 5<br>
1.2.2 从光盘安装linux 5<br>
1.2.3 从硬盘安装linux 22<br>
1.2.4 在虚拟机下安装linux 23<br>
1.3 linux常用命令 28<br>
1.3.1 shell终端 28<br>
1.3.2 与目录相关的命令 29<br>
1.3.3 与文件相关的命令 29<br>
1.3.4 与网络服务相关的命令 31<br>
1.4 本章小结 31<br>
上机题 32<br>
第2章 shell编程 33<br>
2.1 shell简介 33<br>
2.1.1 关于shell 33<br>
2.1.2 shell的使用 34<br>
2.1.3 常见shell的种类 36<br>
2.2 shell基本语法 38<br>
2.2.1 变量 38<br>
2.2.2 通配符 43<br>
2.2.3 引号 44<br>
2.2.4 注释符 46<br>
2.3 选择结构 46<br>
2.3.1 test命令 46<br>
2.3.2 if语句 49<br>
2.3.3 if…else语句 49<br>
2.3.4 if…elif语句 50<br>
2.3.5 case语句 52<br>
2.4 循环结构 54<br>
2.4.1 for语句 54<br>
2.4.2 while语句 56<br>
2.4.3 until语句 58<br>
2.4.4 异常退出循环 58<br>
2.5 函数 61<br>
2.5.1 定义函数 61<br>
2.5.2 交互式shell中定义和使用函数 62<br>
2.5.3 shell脚本中定义和使用函数 62<br>
2.5.4 将函数定义在单独的文件中 64<br>
2.6 本章小结 65<br>
上机题 65<br>
第3章 linux c开发环境 67<br>
3.1 c编辑器 67<br>
3.1.1 vi 67<br>
3.1.2 gedit 72<br>
3.1.3 kwrite 74<br>
3.1.4 kate 75<br>
3.2 程序编译器gcc 78<br>
3.2.1 gcc简介 78<br>
3.2.2 gcc编译初步 79<br>
3.2.3 警告提示功能 81<br>
3.2.4 优化gcc 82<br>
3.2.5 连接库 86<br>
3.2.6 调试选项 87<br>
3.3 程序调试器gdb 88<br>
3.3.1 gdb简介 88<br>
3.3.2 gdb调试初步 90<br>
3.3.3 使用断点 92<br>
3.3.4 查看运行时数据 97<br>
3.3.5 查看源程序 103<br>
3.3.6 改变程序的执行 105<br>
3.4 本章小结 109<br>
上机题 110<br>
第4章 linux下常用c库函数 112<br>
4.1 使用库函数的优势 112<br>
4.2 内存操作相关 114<br>
4.2.1 malloc函数 115<br>
4.2.2 calloc函数 115<br>
4.2.3 free函数 117<br>
4.2.4 memset函数 118<br>
4.2.5 memcpy函数 123<br>
4.2.6 memmove函数 125<br>
4.3 数字与字符串间的转换 126<br>
4.3.1 字符串转换为整型 126<br>
4.3.2 字符串转换为实型 129<br>
4.3.3 整型转换为字符串 130<br>
4.3.4 实型转换为字符串 132<br>
4.4 日期与时间 135<br>
4.5 随机函数 138<br>
4.6 本章小结 142<br>
上机题 143<br>
第5章 进程管理 144<br>
5.1 进程概述 144<br>
5.1.1 linux进程简介 144<br>
5.1.2 task_struct结构 146<br>
5.2 进程管理 150<br>
5.2.1 获得进程id 151<br>
5.2.2 创建进程 152<br>
5.2.3 进程执行 159<br>
5.2.4 进程消亡 163<br>
5.2.5 进程等待 167<br>
5.2.6 system函数 173<br>
5.2.7 进程组与会话 175<br>
5.3 进程调度机制 177<br>
5.4 本章小结 180<br>
上机题 180<br>
第6章 线程管理 182<br>
6.1 线程概述 182<br>
6.2 线程的基本操作 183<br>
6.2.1 创建线程 183<br>
6.2.2 线程等待 186<br>
6.2.3 线程终止 187<br>
6.2.4 线程属性 189<br>
6.3 线程同步 193<br>
6.3.1 互斥锁 193<br>
6.3.2 条件变量 198<br>
6.3.3 信号量 203<br>
6.4 本章小结 207<br>
上机题 208<br>
第7章 基于文件描述符的i/o操作 209<br>
7.1 linux文件系统 209<br>
7.1.1 文件系统结构 209<br>
7.1.2 文件类型 210<br>
7.1.3 文件访问权限 213<br>
7.1.4 数据结构 214<br>
7.2 文件i/o操作 216<br>
7.2.1 文件的创建、打开与关闭 217<br>
7.2.2 文件的定位 221<br>
7.2.3 文件的读/写 224<br>
7.3 文件属性操作 228<br>
7.3.1 改变文件访问权限 228<br>
7.3.2 改变文件所有者 229<br>
7.3.3 重命名 230<br>
7.4 文件的其他操作 233<br>
7.4.1 stat()、fstat()和lstat()函数 233<br>
7.4.2 dup()和dup2()函数 235<br>
7.4.3 fcntl()函数 236<br>
7.4.4 sync()和fsync()函数 236<br>
7.5 特殊文件的操作 237<br>
7.5.1 目录文件 237<br>
7.5.2 链接文件 241<br>
7.5.3 管道文件 244<br>
7.5.4 设备文件 246<br>
7.6 本章小结 246<br>
上机题 246<br>
第8章 基于流的i/o操作 248<br>
8.1 流与缓存 248<br>
8.1.1 流和file对象 248<br>
8.1.2 缓存 250<br>
8.1.3 设置缓存 251<br>
8.2 流的打开与关闭 255<br>
8.2.1 流的打开 255<br>
8.2.2 流的关闭 257<br>
8.2.3 注意fclose 259<br>
8.3 流i/o操作 260<br>
8.3.1 字符i/o 260<br>
8.3.2 行i/o 264<br>
8.3.3 直接i/o 267<br>
8.3.4 格式化i/o 270<br>
8.4 本章小结 273<br>
上机题 273<br>
第9章 套接字编程 274<br>
9.1 套接字编程基础 274<br>
9.1.1 套接字概述 274<br>
9.1.2 套接字数据结构 276<br>
9.1.3 基础函数 279<br>
9.2 tcp套接字编程 285<br>
9.2.1 tcp套接字原理 285<br>
9.2.2 tcp套接字函数 286<br>
9.2.3 tcp套接字client/server程序实例 299<br>
9.3 udp套接字编程 304<br>
9.3.1 udp套接字原理 304<br>
9.3.2 udp数据发送与接收 305<br>
9.3.3 udp套接字client/server程序实例 305<br>
9.4 多客户模型 309<br>
9.4.1 循环服务器 309<br>
9.4.2 并发服务器 310<br>
9.4.3 多路复用i/o 311<br>
9.5 本章小结 319<br>
上机题 320<br>
第10章 linux数据库编程 321<br>
10.1 linux数据库简介 321<br>
10.1.1 数据库的基本概念 321<br>
10.1.2 关系型数据库 322<br>
10.1.3 linux下的常用数据库 324<br>
10.2 mysql的使用 326<br>
10.2.1 安装mysql 326<br>
10.2.2 mysql的常用操作 331<br>
10.3 数据库编程 334<br>
10.3.1 数据结构 334<br>
10.3.2 函数api 338<br>
10.3.3 一个简易的员工信息管理系统 353<br>
10.4 本章小结 358<br>
上机题 358<br>
第11章 gtk+图形界面开发 359<br>
11.1 linux图形界面开发简介 359<br>
11.1.1 linux图形界面环境 359<br>
11.1.2 gtk+简介 360<br>
11.2 基本控件 363<br>
11.2.1 窗口 363<br>
11.2.2 标签 368<br>
11.2.3 按钮 369<br>
11.2.4 文本框 371<br>
11.3 布局控件 378<br>
11.3.1 表格 378<br>
11.3.2 框 382<br>
11.3.3 窗格 383<br>
11.4 其他高级控件 385<br>
11.4.1 进度条、微调按钮、组合框 385<br>
11.4.2 单选按钮、复选按钮 390<br>
11.4.3 下拉菜单 392<br>
11.5 gtk+信号与事件 394<br>
11.6 本章小结 398<br>
上机题 398<br>
第12章 设计一款linux下的小游戏 400<br>
12.1 游戏简介 400<br>
12.2 程序模块划分 403<br>
12.2.1 初始化模块 403<br>
12.2.2 对话框显示模块 405<br>
12.2.3 游戏主模块 408<br>
12.3 游戏效果演示 426<br>
12.4 本章小结 427<br>
第13章 设计linux下的学生信息管理系统 428<br>
13.1 软件功能简介 428<br>
13.2 程序模块划分 429<br>
13.2.1 数据库设计 429<br>
13.2.2 用户登录 436<br>
13.2.3 学生查询界面 441<br>
13.2.4 教师查询界面 443<br>
13.2.5 管理员查询界面 445<br>
13.2.6 makefile文件 448<br>
13.3 软件运行效果演示 448<br>
13.4 本章小结 452<br>















