没有公告
本书全面介绍了Linux的编程知识,包括Linux程序的调试、Shell编程、Linux的内存管理、Linux的系统调用、标准I/O流、进程与进程调度、进程间通信、信号编程、Linux多线程编程、网络编程、数据库编程、图形编程等。书中最后还介绍了近年来较为热门的Linux国际化和本地化程序设计。 本书内容丰富、深入浅出,每章内容都含有大量编程实例,以加强读者理解和提供给读者使用。本书适合希望利用Linux进行开发的程序设计人员阅读,也可作为在校大学生和研究生学习Linux程序设计入门知识的参考书。
第1章 GNU/Linux系统简介 11.1 GNU/Linux概述 11.2 GNU/Linux的特点 11.3 安装GNU/Linux 21.4 Linux 2.6内核的一些重要特性 61.4.1 使用了新的调度算法 61.4.2 内核抢占 71.4.3 改进的虚拟内存 71.4.4 改进的内存管理 71.4.5 工作队列接口 81.4.6 中断例程的变化 81.4.7 统一的设备模型 9第2章 Linux使用基础 112.1 系统登录 112.2 Linux的基本命令 122.2.1 ls命令:列出文件名 122.2.2 cd命令:改变目录 122.2.3 cp命令:文件复制 132.2.4 rm命令:文件删除 132.2.5 mv命令:文件移动 132.2.6 mkdir命令:创建目录 142.2.7 rmdir命令:删除目录 142.2.8 chmod命令:改变文件或目录的访问权限 142.2.9 chown命令:改变档案所属者 152.2.10 chgrp命令:改变文件或目录所属的组 162.2.11 ps命令:查看进程 162.2.12 top命令:另一个查看进程的命令 182.2.13 kill命令:杀死进程 182.2.14 du命令:查看磁盘使用情况 192.3 编译内核 192.4 Linux中的文本编辑器 212.4.1 vi 212.4.2 Emacs 24第3章 Linux程序设计入门 253.1 使用GNU CC编程 253.1.1 GCC简介 253.1.2 “Hello,World!” 253.1.3 GCC的主要选项 273.1.4 PGCC简介 283.2 使用GNU make 283.2.1 初识Makefile 283.2.2 Makefile规则 293.2.3 Makefile中的变量 303.2.4 一个简单的Makefile文件 313.2.5 假想目标(Phony Targets) 323.2.6 条件语句 323.2.7 依赖关系 333.2.8 函数 333.2.9 Makefile的扩展变量 353.2.10 Makefiles中的替换 353.3 使用autoconf 383.3.1 创建configure脚本 383.3.2 编写configure.in文件 383.3.3 用autoconf创建configure 393.3.4 更新configure脚本 403.4 使用automake 41第4章 调试 444.1 GDB概述 444.1.1 GDB使用示例 454.1.2 启动GDB 474.1.3 模式的设置 474.1.4 退出GDB 484.1.5 shell命令的使用 484.2 在GDB下运行程序 484.2.1 输入命令的技巧 494.2.2 调试程序的注意事项 504.2.3 调试程序环境设置 514.2.4 运行程序 524.3 调试一个已经运行的程序 524.3.1 结束子进程 524.3.2 附加的进程信息 534.3.3 对多线程程序的调试 534.3.4 对多进程程序的调试 544.3.5 停止和继续 544.3.6 设置断点,观测点和异常 54第5章 shell编程 615.1 shell简介 615.2 shell基础编程 625.2.1 环境变量与shell变量 625.2.2 条件测试 665.2.3 控制流结构 685.2.4 shell内嵌命令 735.2.5 shell函数 765.2.6 shell输入与输出 765.3 shell高级编程 795.3.1 命令的排列、调度与替换 795.3.2 文件名匹配 805.3.3 引用 815.3.4 在shell中常用的系统命令 835.3.5 shell脚本的调试 845.3.6 shell编程实例 84第6章 内存管理 916.1 内存的错误使用及其对策 916.1.1 使用 916.1.2 对策 926.2 内存管理与系统函数 936.2.1 内存管理 936.2.2 系统函数 946.3 内存管理器 1066.4 内存管理方法 1106.4.1 内存池 1106.4.2 垃圾收集 111第7章 Linux系统调用 1137.1 综述 1137.2 系统调用入口 1147.3 常用系统调用 115第8章 Linux标准I/O流 1638.1 流和FILE对象 1638.2 打开和关闭流 1638.3 数据块读写流 1658.4 字符读写流 1658.5 字符串读写流 1668.6 定位流 1678.7 文件流的检测 1698.8 格式化I/O 1698.9 其他相关函数 171第9章 进程与进程调度 1779.1 进程的属性 1779.2 进程的状态 1789.3 进程的结构 1789.4 进程控制 1799.5 进程调度 1809.6 进程的一般操作 1819.6.1 进程的创建 1819.6.2 进程的执行 1839.6.3 进程的消亡 1859.7 进程的管理 1869.8 进程的相关系统调用 1879.8.1 获取、设置进程相关的ID 1879.8.2 相关函数 1899.9 示范程序 192第10章 进程间通信 19510.1 概述 19510.2 管道 19610.2.1 管道的创建和读写 19610.2.2 管道应用实例 19710.2.3 popen和pclose 19910.3 命名管道(FIFO) 20010.3.1 命名管道的创建与读写 20010.3.2 命名管道应用实例 20110.4 内存映射 20410.5 消息队列 20510.5.1 消息队列处理函数 20510.5.2 消息队列应用实例 20710.6 共享内存 21010.6.1 共享内存处理函数 21010.6.2 共享内存应用实例 21110.7 信号量 21510.7.1 信号量的处理函数 21510.7.2 信号量应用实例 21710.8 基于Socket的多进程实时通信 22110.9 双向进程间通信管道 221第11章 信号 22411.1 概述 22411.2 信号的产生 22811.3 信号操作 23011.4 信号相关函数简介 23111.5 示范程序 23711.5.1 服务器程序模式 23711.5.2 应用程序模式 239第12章 多线程编程 24212.1 多线程编程入门 24312.2 创建线程 24412.2.1 线程的创建 24412.2.2 Linux中创建线程 24512.2.3 pthread_join()和pthread_exit() 24512.3 取消线程 24712.4 线程私有数据 24812.5 互斥锁 25012.6 信号灯 25512.7 线程终止 25612.8 一些不常见的API 25812.9 示范程序 259第13章 Linux下的数据库编程 26413.1 MySQL的使用 26413.1.1 启动、停止MySQL服务器 26513.1.2 管理和使用MySQL 26513.1.3 mysqladmin的使用 26713.2 MySQL的C语言程序接口 26713.3 程序演示 27513.4 Linux下的Oracle数据库编程 28013.4.1 创建用户和表 28113.4.2 Pro*C编程 281第14章 网络编程 28414.1 网络基本概念 28414.1.1 网络协议 28414.1.2 端口号 28814.1.3 地址 28914.1.4 连接 28914.1.5 服务方式 29014.1.6 客户机/服务器模式 29014.1.7 其他概念 29114.2 SOCKET编程 29214.2.1 数据类型 29214.2.2 常用函数 29314.2.3 域名服务相关函数 30314.2.4 地址转换相关函数 30414.2.5 其他相关函数 30514.2.6 select函数的使用 30614.3 示范程序 30814.3.1 面向连接的客户/服务模型 30814.3.2 无连接的客户/服务器模型 31014.3.3 多播模型 31314.3.4 套接字聊天模型 315第15章 Linux图形编程 32015.1 Graphics与GUI 32015.2 Linux下的图形库 32015.3 SDL简介 32115.4 安装和使用SDL开发库 32115.5 初始化图形模式 32215.5.1 初始化SDL 32215.5.2 设置视频显示模式 32315.5.3 完整的实例 32315.6 基本绘图 32415.6.1 点的绘制 32415.6.2 线的绘制 32615.6.3 矩形的绘制与填充 32615.6.4 圆的绘制 32715.6.5 现成的库 32815.7 图片显示 32815.8 文字显示 32915.8.1 SFont 32915.8.2 TrueType字体的显示 33015.8.3 点阵字库的显示 33115.8.4 文字图片 33315.9 动画 33415.9.1 简单动画的实现 33415.9.2 多子帧动画 33515.10 三维绘图 33915.11 浅谈游戏编程 345第16章 国际化和中文化编程 34916.1 国际化的相关概念 34916.1.1 国际化 34916.1.2 本地化 35016.1.3 中文化 35116.1.4 国际化标准组织 35216.1.5 国际化的意义 35216.1.6 国际化的历史和级别 35316.2 汉字编码 35316.3 Linux的汉化 35616.3.1 系统汉化 35616.3.2 输入法 35816.3.3 XWindow系统的国际化 36016.4 信息的国际化 36116.5 Linux下locale编程 36116.6 kdevelop环境下的qt中文化程序设计 36316.7 KDE国际化编程 36716.8 Gtk+/Gnome的汉化 36816.9 Unicode在Linux上的应用 36916.10 中文Linux 37016.10.1 基本要求 37016.10.2 中文Linux技术 37016.11 XWindow下的输入法 37116.11.1 背景 37116.11.2 XIM协议的原理 37216.11.3 程序接口 37616.11.4 实用函数 37816.11.5 XIM开发工具IMdkit简介 38016.11.6 XIM程序设计要求 382第17章 综合实例 38417.1 程序功能概述 38417.2 功能函数详解 39117.2.1 main函数 39117.2.2 初始化函数 39217.2.3 设置硬件设备的函数 39517.2.4 创建新进程的函数 39917.2.5 进程处理的函数 40117.2.6 命令解析的函数 40417.2.7 信号量相关的函数 40717.2.8 读取消息的函数 40817.2.9 处理消息的函数 41317.2.10 与定时器有关的函数 41817.2.11 与GPRS数据传输相关的函数 42217.2.12 配置文件的读写 42617.2.13 获取短消息的函数 42717.2.14 AT指令集相关函数 430