本书介绍了Linux的编程环境,内容包括Linux的系统级编程界面——系统调用,涉及文件系统管理、进程管理、进程间通信、线程管理、网络编程等,并用实例展示了Linux的内核接口。另外本书还详细介绍了其他Linux下的编程工具,包括Perl、Shell、Aek(awk、Gawk)等,并且实例介绍了这几种脚步本语言工具的语法体系和应用环境。书中介绍了其他各种编程工具的适用环境,读者可根据具体的任务选择最合适的编程工具。并且书中还用了相当篇幅介绍了网络编程与网络安全,特别是专门介绍了用户安全技术、程序员安全技术和系统管理员安全技术,供读者学习参考。\r\n 本书内容翔实,讲述深入浅出,既适合初学者学习Linux的编程环境,也可作为有经验的程序员的速查手册。\r\n
第一章 Linux的历史和功能简介\r\n\r\n1.1 什么是Linux\r\n1.2 Linux的历史\r\n1.3 Linux的特点\r\n1.4 Linux与自由软件及GNU的关系\r\n1.5 Linux的用途\r\n1.5.1 个人UNIX工作站\r\n1.5.2 X终端客户\r\n1.5.3 X应用服务器\r\n1.5.4 UNIX开发平台\r\n1.5.5 网络服务器\r\n1.5.6 Internet服务器\r\n1.5.7 终端服务器、传真服务器、Modem服务器\r\n1.6 Linux的发行版本\r\n1.7 Linux的不足之处\r\n\r\n第二章 Linux程序开发工具简介\r\n\r\n2.1 C语言的编译器和调试器\r\n2.1.1 GCC的基本用法\r\n2.1.2 一些常用的选项\r\n2.1.3 优化选项\r\n2.1.4 用gdb调试程序\r\n2.1.5 图形的调试工具xxgdb\r\n2.1.6 cproto\r\n2.1.7 grpof\r\n2.1.8 其他工具\r\n2.2 C++语言简介及其编译器与调试器\r\n2.2.1 为什么使用C++\r\n2.2.2 调试C++程序\r\n2.2.3 调试异常处理\r\n2.2.4 GNU的C++类库\r\n2.3 Make\r\n2.3.1 Make简介\r\n2.3.2 Makefile文件\r\n2.3.3 make的内建规则\r\n2.3.4 使用autoconf和automake产生makefile\r\n2.4 Xwpe\r\n2.5 Shell简介\r\n2.6 perl语言简介\r\n2.6.1 安装Perl\r\n2.6.2 运行Perl脚本\r\n2.7 awk简介\r\n2.7.1 awk的用途\r\n2.7.2 awk的特点\r\n2.7.3 awk的历史\r\n2.8 小结\r\n\r\n第三章 Linux下的文本编辑器\r\n\r\n3.1 vi简介\r\n3.1.1 vi基本观念\r\n3.1.2 vi的基本命令\r\n3.1.3 vi高级应用\r\n3.2 Emacs简介\r\n3.2.1 GNUEmacs的特点\r\n3.2.2 GNUEmacs的基本用法\r\n3.2.3 Emacs小结\r\n3.3 其他编辑器\r\n3.4 小结\r\n\r\n第四章 Linux核心与系统调用\r\n\r\n4.1 Linux的核心\r\n4.2 系统调用的使用\r\n4.3 系统调用与函数的区别\r\n4.4 核心程序的结构\r\n4.5 小结\r\n\r\n第五章 Linux的文件系统\r\n\r\n5.1 操作文件的常用命令\r\n5.2 Linux文件系统概述\r\n5.3 EXt2文件系统\r\n5.4 VFS\r\n5.5 /proc文件系统\r\n5.6 设备文件\r\n5.7 操作文件的系统调用\r\n5.7.1 文件描述字\r\n5.7.2 open系统调用\r\n5.7.3 close系统调用\r\n5.7.4 read与write系统调用\r\n5.7.5 creat系统调用\r\n5.7.6 lseek系统调用\r\n5.7.7 dup系统调用\r\n5.7.8 link系统调用\r\n5.7.9 unlink系统调用\r\n5.7.10 fcntl系统调用\r\n5.7.11 stat与fstat系统调用\r\n5.7.12 access系统调用\r\n5.7.13 chmod系统调用\r\n5.7.14 chown系统调用\r\n5.7.15 chdir系统调用\r\n5.7.16 mkdir与rmdir系统调用\r\n5.7.17 mknd系统调用\r\n5.7.18 mount与umount系统调用\r\n5.7.19 ftw系统调用\r\n5.8 小结\r\n\r\n第六章 进程管理\r\n\r\n6.1 进程的概念\r\n6.2 观察过程执行\r\n6.3 Linux的进程管理\r\n6.3.1 进程ID\r\n6.3.2 进程调度\r\n6.3.3 文件处理\r\n6.3.4 虚拟内存处理\r\n6.3.5 创建一个进程\r\n6.3.6 执行一个程序\r\n6.4 创建进程——fork和clone\r\n6.4.1 fork()系统调用\r\n6.4.2 system()系统调用\r\n6.4.3 clone()系统调用\r\n6.5 exec系统调用\r\n6.6 进程的优先级\r\n6.7 获取/设置进程信息\r\n6.7.1 获取进程的PID号\r\n6.7.2 获取/设置进程组信息\r\n6.8 ptrace()系统调用\r\n6.9 Linux的启动过程\r\n6.10 小结\r\n\r\n第七章 进程间通信(IPC)\r\n\r\n7.1 进程间通信机制简介\r\n7.1.1 信号\r\n7.1.2 管道\r\n7.2 System V IPC机制\r\n7.2.1 消息队列\r\n7.2.2 信号灯(semaphores)\r\n7.2.3 共享内存\r\n7.3 IPC系统调用\r\n7.4 信号处理\r\n7.4.1 信号的基本概念\r\n7.4.2 信号类型\r\n7.4.3 处理信号的系统调用\r\n7.5 Linux操纵管道的系统调用\r\n7.5.1 pipe()系统调用\r\n7.5.2 命名管道\r\n7.6 UNIX System V IPC机制\r\n7.6.1 IPC对象的内容\r\n7.6.2 消息队列\r\n7.6.3 共享内存\r\n7.6.4 信号灯\r\n7.7 小结\r\n\r\n第八章 Linux的多线程编程\r\n\r\n8.1 简介\r\n8.1.1 使用多线程的好处\r\n8.1.2 Linux的线程结构\r\n8.1.3 Linux线程的缺点\r\n8.2 Linux的线程库应用\r\n8.2.1 创建线程\r\n8.2.2 暂停线程\r\n8.2.3 线程同步\r\n8.2.4 线程的终止和终止处理程序\r\n8.2.5 线程特定数据的处理函数\r\n8.2.6 使用信号灯来同步线程\r\n8.3 小结\r\n\r\n第九章 网络编程\r\n\r\n9.1 TCP/IP简介\r\n9.2 Linux中TCP/IP网络的层结构\r\n9.3 BSD套接字接口\r\n9.4 INET套接字层结构\r\n9.4.1 创建一个BSD套接字\r\n9.4.2 绑定一个INET BSD套接字\r\n9.4.3 连接一个INET BSD套接字\r\n9.4.4 监听一个INET BSD套接字\r\n9.4.5 接收一个连接请求\r\n9.5 IP层\r\n9.5.1 套接字缓冲区\r\n9.5.2 接收IP包\r\n9.5.3 发送IP包\r\n9.5.4 数据分组\r\n9.6 地址解析协议(ARP)\r\n9.7 IP路由\r\n9.7.1 路由缓存\r\n9.7.2 传送消息数据库\r\n9.8 网络编程的基本概念\r\n9.8.1 网络地址\r\n9.8.2 网络端口\r\n9.8.3 套接字\r\n9.8.4 客户/服务器模式(C/S)\r\n9.9 阻塞与非阻塞\r\n9.10 套接字网络编程原理\r\n9.11 网络编程的系统调用\r\n\r\n第十章 Linux的Shell\r\n\r\n10.1 什么是Shell\r\n10.1.1 DOS中的command.com文件\r\n10.1.2 Linux中的内核沟通界面\r\n10.2 Linux中几种不同时Shell\r\n10.2.1 Bash Shell\r\n10.2.2 C Shell\r\n10.2.3 Korn Shell\r\n10.2.4 ash Shell\r\n10.2.5 zsh\r\n10.3 Shell命令解释程序\r\n10.3.1 输入输出重新定向\r\n10.3.2 管道线(pipelines)\r\n10.3.3 后台进程\r\n10.3.4 元字符及特殊字符\r\n10.3.5 C Shell的交互功能\r\n10.4 She11的使用\r\n10.4.1 Shell的进入与退出\r\n10.4.2 Shell的内部指令和外部指令\r\n10.5 Shell环境的初始化\r\n10.6 小结\r\n\r\n第十一章 Shell程序设计\r\n\r\n11.1 Shell程序\r\n11.2 Shell程序的变量和基本语法\r\n11.2.1 Shell变量\r\n11.2.2 test命令\r\n11.2.3 控制结构\r\n11.2.4 Shell脚本程序中的函数\r\n11.3 正则表达式\r\n11.3.1 行首匹配符“^”和行尾匹配符“$”\r\n11.3.2 单个字符匹配符“.”\r\n11.3.3 字符重复匹配符“*”\r\n11.3.4 字符类匹配符“[]”\r\n11.3.5 各种匹配符的组合使用\r\n11.4 过滤器\r\n11.4.1 三种常见的过滤器\r\n11.4.2 过滤器中的重走向及管道\r\n11.4.3 输出类过滤器\r\n11.4.4 grep命令和fgrep命令\r\n11.4.5 grep命令与正则表达式\r\n11.5 何时使用Shell程序\r\n11.6 小结\r\n\r\n第十二章 Perl语言简介\r\n\r\n12.1 perl的历史\r\n12.2 perl的目标和适用性\r\n12.3 基本概念和概览\r\n12.4 小结\r\n\r\n第十三章 Perl编程\r\n\r\n13.1 变量\r\n13.1.1 标量变量\r\n13.1.2 数组变量\r\n13.2 字符串\r\n13.2.1 单引字符串\r\n13.2.2 双引字符串\r\n13.3 运算符\r\n13.3.1 数字运算符\r\n13.3.2 字符串运算符\r\n13.3.3 运算符的优先级和相关性\r\n13.3.4 数字和字符串间的转换\r\n13.3.5 标量变量运算符\r\n13.3.6 数组运算符\r\n13.4 控制结构\r\n13.4.1 语句块\r\n13.4.2 条件控制\r\n13.4.3 循环控制\r\n13.4.4 复杂控制结构\r\n13.5 关联数组\r\n13.5.1 关联数组的变量\r\n13.5.2 关联数组的实量表示\r\n13.5.3 关联数组操作符\r\n13.6 输入输出\r\n13.6.1 从STDIN输入\r\n13.6.2 从<>操作符输入\r\n13.6.3 向STDOUT输出\r\n13.7 正则表达式\r\n13.7.1 正则表达式的概念\r\n13.7.2 正则表达式的简单应用\r\n13.7.3 模式\r\n13.7.4 有关匹配操作符的详细介绍\r\n13.7.5 替换\r\n13.8 函数\r\n13.8.1 定义用户函数\r\n13.8.2 申请用户函数\r\n13.8.3 返回值\r\n13.8.4 参数\r\n13.8.5 函数中的局部变量\r\n13.9 格式\r\n13.9.1 定义格式\r\n13.9.2 申请格式\r\n13.9.3 字段句柄\r\n13.9.4 页顶格式\r\n13.9.5 改变格式的缺省值\r\n13.10 文件和目录\r\n13.10.1 文件句柄\r\n13.10.2 文件句柄操作\r\n13.10.3 目录句柄\r\n13.10.4 目录句柄操作\r\n13.10.5 文件操作\r\n13.10.6 目录操作——创建及删除目录\r\n13.10.7 权限\r\n13.11 进程管理\r\n13.11.1 使用system()和exec()\r\n13.11.2 使用单引号\r\n13.11.3 把过程用作文件句柄\r\n13.11.4 使用fork\r\n13.11.5 发送和接收信号\r\n13.12 小结\r\n\r\n第十四章 awk基础\r\n\r\n14.1 基本awk概念\r\n14.1.1 awk的由来\r\n14.1.2 awk的版本介绍\r\n14.1.3 awk的应用\r\n14.1.4 awk的特性\r\n14.2 命令行和管道\r\n14.3 模式和操作\r\n14.3.1 模式和操作简介\r\n14.3.2 简单正则表达式\r\n14.3.3 复合正则表达式\r\n14.4 脚本格式\r\n14.5 基本运算\r\n\r\n第十五章 awk程序设计\r\n\r\n15.1 变量\r\n15.1.1 变量的类型\r\n15.1.2 预定义变量\r\n15.1.3 字符串变量\r\n15.2 数组\r\n15.3 条件控制\r\n15.3.1 if语句\r\n15.3.2 if-else语句\r\n15.3.3 if-else if语句\r\n15.3.4 空语句和条件语句\r\n15.4 循环控制\r\n15.4.1 do-While循环\r\n15.4.2 for循环\r\n15.4.3 while循环\r\n15.4.4 break和continue语句\r\n15.5 输入输出\r\n15.5.1 输入\r\n15.5.2 输出\r\n15.6 函数\r\n15.6.1 内部函数\r\n15.6.2 自定义函数\r\n\r\n第十六章 安全问题剖析\r\n\r\n16.1 安全问题概述\r\n16.1.1 网络安全\r\n16.1.2 网络安全的特征及其分类\r\n16.1.3 安全机制和服务及加密机制\r\n16.1.4 TCP/IP协议的安全问题及网络攻击方法\r\n16.2 防火墙\r\n16.2.1 防火墙的功能\r\n16.2.2 防火墙的类型\r\n16.2.3 防火墙的安全策略\r\n\r\n第十六章 用户安全技术\r\n\r\n17.1 口令安全\r\n17.2 文件许可权\r\n17.3 目录许可\r\n17.4 umask命令\r\n17.5 设置用户ID和同组用户ID许可\r\n17.6 cp、mv、ln和cpio命令\r\n17.7 su和newgrp命令\r\n17.8 文件加密\r\n17.9 其他安全问题\r\n17.10 保持账号安全的要点\r\n\r\n第十八章 程序员安全技术\r\n\r\n18.1 系统子程序的安全性\r\n18.1.1 I/O子程序\r\n18.1.2 进程控制\r\n18.1.3 文件属性\r\n18.1.4 UID和GID的处理\r\n18.2 标准C库子程序的安全性\r\n18.2.1 标准I/O\r\n18.2.2 /etc/passwd处理\r\n18.2.3 /etc/group的处理\r\n18.2.4 加密子程序\r\n18.2.5 运行Shell\r\n18.3 编写C程序的安全性\r\n18.4 root程序设计的安全性\r\n\r\n第十九章 系统管理员安全技术\r\n\r\n19.1 文件系统安全\r\n19.1.1 Linux文件系统概述\r\n19.1.2 设备文件\r\n19.1.3 /etc/mknod命令\r\n19.1.4 安全考虑\r\n19.1.5 find命令\r\n19.1.6 secure程序\r\n19.1.7 ncheck命令\r\n19.1.8 安装和拆卸文件系统\r\n19.1.9 系统目录和文件\r\n19.2 超级用户权限安全\r\n19.2.1 增加、删除、移走用户\r\n19.2.2 启动系统\r\n19.2.3 init进程\r\n19.2.4 进入多用户\r\n19.2.5 shutdown命令\r\n19.2.6 /etc/profile\r\n19.3 几个重要文件和执行环境的安全\r\n19.3.1 /etc/passwd文件\r\n19.3.2 /etc/group文件\r\n19.3.3 执行的环境\r\n19.4 安全管理及安全审计\r\n19.4.1 安全管理\r\n19.4.2 安全审计\r\n19.5 用户及系统管理员安全意识\r\n19.5.1 用户安全意识\r\n19.5.2 系统管理员意识\r\n19.6 小结