内容简介
《Linux程序设计(第4版)》讲述了Linux系统及其他IJNIX风格的操作系统上的程序开发,主要内容包括标准Linux c语言函数库和由不同的Linux或UNIX标准指定的各种工具的使用方法,大多数标准Linux开发工具的使用方法,通过DBM和MySQL数据库系统存储Linux中的数据,为x视窗系统建立图形化用户界面等。《Linux程序设计(第4版)》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。
《Linux程序设计(第4版)》适合Linux的初学者及希望利用Linux来进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。
目录
第 1章 入门 1
1.1 UNIX、Linux和GNU简介 1
1.1.1 什么是UNIX 1
1.1.2 什么是Linux 2
1.1.3 GNU项目和自由软件基金会 3
1.1.4 Linux发行版 3
1.2 Linux程序设计 4
1.2.1 Linux程序 4
1.2.2 文本编辑器 5
1.2.3 C语言编译器 5
1.2.4 开发系统导引 7
1.3 获得帮助 12
1.4 小结 14
第 2章 shell程序设计 15
2.1 为什么使用shell编程 15
2.2 一点哲学 16
2.3 什么是shell 16
2.4 管道和重定向 18
2.4.1 重定向输出 18
2.4.2 重定向输入 19
2.4.3 管道 19
2.5 作为程序设计语言的shell 20
2.5.1 交互式程序 20
2.5.2 创建脚本 21
2.5.3 把脚本设置为可执行 22
2.6 shell的语法 23
2.6.1 变量 23
2.6.2 条件 27
2.6.3 控制结构 29
2.6.4 函数 39
2.6.5 命令 42
2.6.6 命令的执行 58
2.6.7 here文档 61
2.6.8 调试脚本程序 63
2.7 迈向图形化:dialog工具 63
2.8 综合应用 68
2.8.1 需求 68
2.8.2 设计 68
2.8.3 应用程序的说明 76
2.9 小结 77
第3章 文件操作 78
3.1 Linux文件结构 78
3.1.1 目录 79
3.1.2 文件和设备 79
3.2 系统调用和设备驱动程序 80
3.3 库函数 81
3.4 底层文件访问 82
3.4.1 write系统调用 82
3.4.2 read系统调用 83
3.4.3 open系统调用 84
3.4.4 访问权限的初始值 85
3.4.5 其他与文件管理有关的系统调用 88
3.5 标准I/O库 91
3.5.1 fopen函数 91
3.5.2 fread函数 92
3.5.3 fwrite函数 92
3.5.4 fclose函数 92
3.5.5 fflush函数 93
3.5.6 fseek函数 93
3.5.7 fgetc、getc和getchar函数 93
3.5.8 fputc、putc和putchar函数 94
3.5.9 fgets和gets函数 94
3.6 格式化输入和输出 94
3.6.1 printf、fprintf和sprintf函数 94
3.6.2 scanf、fscanf和sscanf函数 96
3.6.3 其他流函数 98
3.6.4 文件流错误 99
3.6.5 文件流和文件描述符 99
3.7 文件和目录的维护 100
3.7.1 chmod系统调用 100
3.7.2 chown系统调用 100
3.7.3 unlink、link和symlink系统调用 100
3.7.4 mkdir和rmdir系统调用 101
3.7.5 chdir系统调用和getcwd函数 101
3.8 扫描目录 102
3.8.1 opendir函数 102
3.8.2 readdir函数 102
3.8.3 telldir函数 103
3.8.4 seekdir函数 103
3.8.5 closedir函数 103
3.9 错误处理 106
3.9.1 strerror函数 106
3.9.2 perror函数 106
3.10 /proc文件系统 107
3.11 高 级主题:fcntl和mmap 110
3.11.1 fcntl系统调用 110
3.11.2 mmap函数 111
3.12 小结 113
第4章 Linux环境 114
4.1 程序参数 114
4.1.1 getopt 116
4.1.2 getopt_long 118
4.2 环境变量 120
4.2.1 环境变量的用途 122
4.2.2 environ变量 122
4.3 时间和日期 123
4.4 临时文件 129
4.5 用户信息 131
4.6 主机信息 134
4.7 日志 135
4.8 资源和限制 139
4.9 小结 143
第5章 终端 144
5.1 对终端进行读写 144
5.2 与终端进行对话 149
5.3 终端驱动程序和通用终端接口 151
5.3.1 概述 151
5.3.2 硬件模型 151
5.4 termios结构 152
5.4.1 输入模式 153
5.4.2 输出模式 154
5.4.3 控制模式 155
5.4.4 本地模式 155
5.4.5 特殊控制字符 155
5.4.6 终端速度 158
5.4.7 其他函数 159
5.5 终端的输出 162
5.5.1 终端的类型 163
5.5.2 识别终端类型 163
5.5.3 使用terminfo功能标志 165
5.6 检测击键动作 170
5.7 虚拟控制台 172
5.8 伪终端 173
5.9 小结 174
第6章 使用curses函数库管理基于文本的屏幕 175
6.1 用curses函数库进行编译 175
6.2 curses术语和概念 176
6.3 屏幕 178
6.3.1 输出到屏幕 179
试读
我们在本书的开始刚刚介绍了用c语言进行Linux程序设计,现在却要调转方向学习编写shell程序,这是为什么?在其他的一些操作系统中,命令行界面只是对图形化界面的一个补充。但对于Linux而言,去并非如此。作为Linux灵感来源的UNIX系统最初根本就没有图形化界面,所有的任务都是通过命令行来完成的。因此,UNIX的命令行系统得到了很大的发展,并且成为一个功能强大的系统。LInux系统沿袭了这一特点,许多强大的功能都可以从shell中轻松实现。因为shell对Linux是如此的重要,并且对自动化简单的任务非常有用,所以我们认为应该尽早介绍shell程序设计。
在本章中,我们将通过一些交互性(基于屏幕)的例子来向读者展示编写shell程序时要用到的语法、结构和命令。这些内容将成为对shell主要特性及其效果的一个很有用的概要介绍。同时,我们也顺便介绍两个在shell中经常用到的特别有用的命令行工具:grep和find。在介绍grep时,我们还将介绍正则表达式的基础知识,它在Linux的工具和程序设计语言(如Perl、Ruby和PHP)中都有应用。在本章的最后,你将学习如何编写一个真正的脚本程序,本书的后续章节里将用C语言对它进行重写和扩充。
前言/序言
欢迎阅读本书第4版,这是一本针对在Linux系统和其他UNIX风格的操作系统上进行程序开发的易于使用的指南性读物。 在本书中,我们的目标是介绍对于IAnux程序员来说非常重要的主题,这些主题的涵盖面非常广泛。书名中的“beginning”更多的是指书中的内容而不是读者的技能。我们对本书的内容组织进行了精心的安排,以帮助读者更多地了解Linux所提供的功能,而不管读者现有的经验有多少。Linux程序设计是一个很大的领域,我们的目标是对广泛领域中的大量主题都进行介绍,从而让读者在每个主题上都具各足够的入门知识。读者对象 如果你是一位程序员,希望利用Linux(或UNIX)提供给软件开发者的工具来加快程序开发的进度,尽量减少编程时间并让你的程序充分利用Linux系统所提供的功能,那么本书将非常适合你。书中明确清晰的解释和分步骤的实验,将帮助你迅速提高编程能力和掌握所有的关键技术。 我们假设读者具备一些c或C++语言的编程经验,这些经验可能来自Windows系统或其他一些操作系统。但我们会尽量保持书中示例程序的简单,即便你不是一个C语言编程专家,也可以轻松地阅读本书。如果存在需要直接比较Linux程序设计和C/C++程序设计的情况,我们都会在书中指出。