当前位置:主页 > 计算机电子书 > 操作系统 > Linux pdf电子书
Linux程序设计

Linux程序设计 PDF 清晰第4版

  • 更新:2020-08-03
  • 大小:221.6 MB
  • 类别:Linux
  • 作者:Neil、Matthew Richar
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

Linux程序设计》是由人民邮电出版社出版的一本关于Linux方面的书籍,作者是Neil、Matthew Richar,主要介绍了关于Linux、程序设计方面的知识内容,目前在Linux类书籍综合评分为:9.4分。

书籍介绍

这书叙述了Linux系统软件以及他UNIX设计风格的电脑操作系统上的软件开发,主题思想包含规范Linux c语言函数库和由不一样的Linux或UNIX规范特定的各种各样小工具的使用说明,大部分规范Linux开发环境的使用说明,根据DBM和MySQL数据库储存Linux中的统计数据,为X窗口系统软件创建图形界面操作界面等。这书根据先详细介绍编程设计基础理论,再用适度的事例和清楚的表述来表明它的方法,协助用户快速把握有关的专业知识。

这书合适Linux的新手及期待运用Linux开展开发设计的程序流程工作人员阅读文章,也合适做为高等学校计算机相关技术专业老师学生的参照教材内容。

Neil Matthew 和RichardStones全球著名的Linux/UNIX权威专家,有数十载Linux/UNIX开发设计工作经验和从事亲身经历。她们应用过基本上全部UNIX版本号,并熟练C/C++、LISP、Fortran、Perl、Tcl和Prolog等各种各样語言。她们从业过各种各样软件项目,从即时嵌入式系统到财务会计系统软件和零售业信息管理系统。除这书外,她们还合著了PostgreSQL、MySQL层面的书籍。

目录

  • 第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
  • 6.3.2 从屏幕读取 180
  • 6.3.3 清除屏幕 180
  • 6.3.4 移动光标 180
  • 6.3.5 字符属性 181
  • 6.4 键盘 183
  • 6.4.1 键盘模式 183
  • 6.4.2 键盘输入 184
  • 6.5 窗口 185
  • 6.5.1 WINDOW结构 185
  • 6.5.2 通用函数 186
  • 6.5.3 移动和更新窗口 187
  • 6.5.4 优化屏幕刷新 190
  • 6.6 子窗口 191
  • 6.7 keypad模式 193
  • 6.8 彩色显示 195
  • 6.9 pad 198
  • 6.10 CD唱片应用程序 200
  • 6.10.1 新CD唱片应用程序的开始部分 200
  • 6.10.2 main函数 202
  • 6.10.3 建立菜单 203
  • 6.10.4 操作数据库文件 204
  • 6.10.5 查询CD数据库 209
  • 6.11 小结 213
  • 第7章 数据管理 214
  • 7.1 内存管理 214
  • 7.1.1 简单的内存分配 214
  • 7.1.2 分配大量的内存 215
  • 7.1.3 滥用内存 218
  • 7.1.4 空指针 219
  • 7.1.5 释放内存 220
  • 7.1.6 其他内存分配函数 221
  • 7.2 文件锁定 222
  • 7.2.1 创建锁文件 222
  • 7.2.2 区域锁定 225
  • 7.2.3 锁定状态下的读写操作 227
  • 7.2.4 文件锁的竞争 232
  • 7.2.5 其他锁命令 236
  • 7.2.6 死锁 236
  • 7.3 数据库 237
  • 7.3.1 dbm数据库 237
  • 7.3.2 dbm例程 238
  • 7.3.3 dbm访问函数 239
  • 7.3.4 其他dbm函数 242
  • 7.4 CD唱片应用程序 244
  • 7.4.1 更新设计 244
  • 7.4.2 使用dbm数据库的CD唱片应用程序 245
  • 7.5 小结 262
  • 第8章 MySQL 263
  • 8.1 安装 263
  • 8.1.1 MySQL软件包 264
  • 8.1.2 安装后的配置 266
  • 8.1.3 安装后的故障修复 270
  • 8.2 MySQL管理 270
  • 8.2.1 命令 270
  • 8.2.2 创建用户并赋予权限 274
  • 8.2.3 密码 276
  • 8.2.4 创建数据库 276
  • 8.2.5 数据类型 277
  • 8.2.6 创建表 278
  • 8.2.7 图形化工具 280
  • 8.3 使用C语言访问MySQL数据 283
  • 8.3.1 连接例程 283
  • 8.3.2 错误处理 287
  • 8.3.3 执行SQL语句 288
  • 8.3.4 更多的函数 301
  • 8.4 CD数据库应用程序 301
  • 8.4.1 创建表 302
  • 8.4.2 添加数据 304
  • 8.4.3 使用C语言访问数据 306
  • 8.5 小结 316
  • 第9章 开发工具 317
  • 9.1 多个源文件带来的问题 317
  • 9.2 make命令和makefile文件 318
  • 9.2.1 makefile的语法 318
  • 9.2.2 make命令的选项和参数 318
  • 9.2.3 makefile文件中的注释 321
  • 9.2.4 makefile文件中的宏 321
  • 9.2.5 多个目标 323
  • 9.2.6 内置规则 325
  • 9.2.7 后缀和模式规则 326
  • 9.2.8 用make管理函数库 327
  • 9.2.9 高级主题:makefile文件和子目录 329
  • 9.2.10 GNU make和gcc 329
  • 9.3 源代码控制 330
  • 9.3.1 RCS 331
  • 9.3.2 SCCS 336
  • 9.3.3 RCS和SCCS的比较 336
  • 9.3.4 CVS 337
  • 9.3.5 CVS的前端程序 340
  • 9.3.6 Subversion 341
  • 9.4 编写手册页 342
  • 9.5 发行软件 345
  • 9.5.1 patch程序 345
  • 9.5.2 其他软件发行工具 347
  • 9.6 RPM软件包 349
  • 9.6.1 使用RPM软件包文件 349
  • 9.6.2 安装RPM软件包 350
  • 9.6.3 创建RPM软件包 350
  • 9.7 其他软件包格式 358
  • 9.8 开发环境 358
  • 9.8.1 KDevelop 358
  • 9.8.2 其他开发环境 360
  • 9.9 小结 360
  • 第10章 调试 361
  • 10.1 错误类型 361
  • 10.2 常用调试技巧 362
  • 10.2.1 有漏洞的程序 362
  • 10.2.2 代码检查 364
  • 10.2.3 取样法 365
  • 10.2.4 程序的受控执行 367
  • 10.3 使用gdb进行调试 368
  • 10.3.1 启动gdb 368
  • 10.3.2 运行一个程序 369
  • 10.3.3 栈跟踪 369
  • 10.3.4 检查变量 370
  • 10.3.5 列出程序源代码 370
  • 10.3.6 设置断点 371
  • 10.3.7 用调试器打补丁 374
  • 10.3.8 深入学习gdb 375
  • 10.4 其他调试工具 375
  • 10.4.1 lint:清理程序中的“垃圾” 376
  • 10.4.2 函数调用工具 378
  • 10.4.3 用prof/gprof产生执行存档 380
  • 10.5 断言 381
  • 10.6 内存调试 383
  • 10.6.1 ElectricFence函数库 383
  • 10.6.2 valgrind 384
  • 10.7 小结 387
  • 第11章 进程和信号 388
  • 11.1 什么是进程 388
  • 11.2 进程的结构 388
  • 11.2.1 进程表 390
  • 11.2.2 查看进程 390
  • 11.2.3 系统进程 391
  • 11.2.4 进程调度 393
  • 11.3 启动新进程 394
  • 11.3.1 等待一个进程 399
  • 11.3.2 僵尸进程 401
  • 11.3.3 输入和输出重定向 403
  • 11.3.4 线程 404
  • 11.4 信号 404
  • 11.4.1 发送信号 408
  • 11.4.2 信号集 412
  • 11.5 小结 415
  • 第12章 POSIX线程 416
  • 12.1 什么是线程 416
  • 12.2 线程的优点和缺点 417
  • 12.3 第一个线程程序 418
  • 12.4 同时执行 421
  • 12.5 同步 423
  • 12.5.1 用信号量进行同步 423
  • 12.5.2 用互斥量进行同步 427
  • 12.6 线程的属性 431
  • 12.7 取消一个线程 435
  • 12.8 多线程 438
  • 12.9 小结 442
  • 第13章 进程间通信:管道 443
  • 13.1 什么是管道 443
  • 13.2 进程管道 444
  • 13.3 将输出送往popen 445
  • 13.3.1 传递更多的数据 446
  • 13.3.2 如何实现popen 447
  • 13.4 pipe调用 449
  • 13.5 父进程和子进程 451
  • 13.5.1 管道关闭后的读操作 453
  • 13.5.2 把管道用作标准输入和标准输出 454
  • 13.6 命名管道:FIFO 456
  • 13.6.1 访问FIFO文件 458
  • 13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464
  • 13.7 CD数据库应用程序 468
  • 13.7.1 目标 469
  • 13.7.2 实现 469
  • 13.7.3 客户接口函数 472
  • 13.7.4 服务器接口server.c 478
  • 13.7.5 管道 481
  • 13.7.6 对CD数据库应用程序的总结 487
  • 13.8 小结 487
  • 第14章 信号量、共享内存和消息队列 488
  • 14.1 信号量 488
  • 14.1.1 信号量的定义 489
  • 14.1.2 一个理论性的例子 489
  • 14.1.3 Linux的信号量机制 490
  • 14.1.4 使用信号量 492
  • 14.2 共享内存 496
  • 14.2.1 shmget函数 497
  • 14.2.2 shmat函数 497
  • 14.2.3 shmdt 498
  • 14.2.4 shmctl 498
  • 14.3 消息队列 502
  • 14.3.1 msgget函数 502
  • 14.3.2 msgsnd函数 503
  • 14.3.3 msgrcv函数 503
  • 14.3.4 msgctl函数 504
  • 14.4 CD数据库应用程序 507
  • 14.4.1 修改服务器函数 507
  • 14.4.2 修改客户函数 509
  • 14.5 IPC状态命令 511
  • 14.5.1 显示信号量状态 511
  • 14.5.2 显示共享内存状态 511
  • 14.5.3 显示消息队列状态 511
  • 14.6 小结 512
  • 第15章 套接字 513
  • 15.1 什么是套接字 513
  • 15.2 套接字连接 513
  • 15.2.1 套接字属性 517
  • 15.2.2 创建套接字 519
  • 15.2.3 套接字地址 520
  • 15.2.4 命名套接字 520
  • 15.2.5 创建套接字队列 521
  • 15.2.6 接受连接 521
  • 15.2.7 请求连接 522
  • 15.2.8 关闭套接字 523
  • 15.2.9 套接字通信 523
  • 15.2.10 主机字节序和网络字节序 525
  • 15.3 网络信息 527
  • 15.3.1 因特网守护进程(xinetd/inetd) 531
  • 15.3.2 套接字选项 533
  • 15.4 多客户 534
  • 15.4.1 select系统调用 537
  • 15.4.2 多客户 540
  • 15.5 数据报 543
  • 15.6 小结 545
  • 第16章 用GTK+进行GNOME编程 546
  • 16.1 X视窗系统简介 546
  • 16.1.1 X服务器 547
  • 16.1.2 X客户端 547
  • 16.1.3 X协议 547
  • 16.1.4 Xlib库 547
  • 16.1.5 X工具包 547
  • 16.1.6 窗口管理器 548
  • 16.1.7 创建GUI的其他方法——平台无关的窗囗API 548
  • 16.2 GTK+简介 549
  • 16.2.1 GLib类型系统 549
  • 16.2.2 GTK+对象系统 550
  • 16.2.3 GNOME简介 550
  • 16.2.4 安装GNOME/GTK+开发库 551
  • 16.3 事件、信号和回调函数 554
  • 16.4 组装盒构件 556
  • 16.5 GTK+构件 559
  • 16.5.1 GtkWindow 559
  • 16.5.2 GtkEntry 560
  • 16.5.3 GtkSpinButton 563
  • 16.5.4 GtkButton 565
  • 16.5.5 GtkTreeView 568
  • 16.6 GNOME构件 571
  • 16.7 GNOME菜单 572
  • 16.8 对话框 576
  • 16.8.1 GtkDialog 577
  • 16.8.2 模式对话框 578
  • 16.8.3 非模式对话框 579
  • 16.8.4 GtkMessageDialog 580
  • 16.9 CD数据库应用程序 581
  • 16.10 小结 592
  • 第17章 用Qt进行KDE编程 593
  • 17.1 KDE和Qt简介 593
  • 17.2 安装Qt 594
  • 17.3 信号和槽 596
  • 17.4 Qt构件 602
  • 17.4.1 QLineEdit 602
  • 17.4.2 Qt按钮 605
  • 17.4.3 QComboBox 609
  • 17.4.4 QListView 613
  • 17.5 对话框 615
  • 17.5.1 QDialog 615
  • 17.5.2 QMessageBox 617
  • 17.5.3 QInputDialog 618
  • 17.5.4 使用qmake简化makefile文件的编写 620
  • 17.6 KDE的菜单和工具栏 620
  • 17.7 使用KDE/Qt编写CD数据库应用程序 624
  • 17.7.1 主窗口 624
  • 17.7.2 AddCdDialog 627
  • 17.7.3 LogonDialog 629
  • 17.7.4 main.cpp 630
  • 17.8 小结 632
  • 第18章 Linux标准 633
  • 18.1 C编程语言 634
  • 18.1.1 发展历史简介 634
  • 18.1.2 GNU编译器集 634
  • 18.1.3 gcc选项 635
  • 18.2 接口和LSB 636
  • 18.2.1 LSB标准函数库 637
  • 18.2.2 LSB用户和组 638
  • 18.2.3 LSB系统初始化 638
  • 18.3 文件系统层次结构标准 639
  • 18.4 更多标准 642
  • 18.5 小结 642

资源获取

资源地址1:https://pan.baidu.com/s/1E301zz_6a0FcqN4SpeUAlg(密码:w4cb)

网友留言