鱼C论坛

 找回密码
 立即注册
查看: 7852|回复: 5

[C] 【进阶】《Linux程序设计》(第4版)

[复制链接]
发表于 2016-11-18 17:43:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
TB1SlhmMpXXXXX7XVXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg

. H7 q8 k& [% S  x9 Z: l7 G- o
, j8 w6 w" M8 I$ j. L* k书名:《Linux程序设计》7 I' p2 }5 H  O& P
作者:马修 (Neil Matthew),斯通斯 (Richard Stones)6 b3 ^2 D4 z* _8 {
译者:陈健,宋健建
+ }5 \3 U* ~# b3 W# Q0 i出版社:人民邮电出版社
8 o( G% g8 j0 t1 D出版年:2010年6月1日(第4版)) m2 `9 F4 j1 `
定价:99.00元  {  z8 d1 n$ J3 U- ]
装帧:平装  ], B0 Z5 U, k1 L! d$ y
ISBN:9787115228215
) A; h6 H9 M: i: H& f9 ^  Q0 W
1 q  |5 K* B: B/ N2 l, P购买链接:
8 y: i  u7 X* R6 i9 o& {* T
( N: n$ t& k2 Z- D$ l0 M

; m5 B* k  ~  D6 O6 ^- Q亚马逊(Kindle)-> 传送门
0 p& Z7 h; d$ B" L) a6 M/ J) a( ^: l1 W# R2 z8 G
亚马逊 -> 传送门+ {4 A( F0 A5 _: n  i5 [8 v& t* \/ z
  f) C/ v: d0 X+ z0 w/ c1 c
当当网 -> 传送门
# _4 X1 _% {" e+ E" _$ d
% P) A8 s! K6 d% }京东 -> 传送门/ M6 h/ u: E7 B9 |; x
" d3 U$ e# R) \  Z
天猫 -> 传送门
. s" B0 c- P7 O/ Y# W6 N9 v$ P# `, F, s/ I# c+ m3 d
% ]1 `; F9 L% o$ T7 G# I( d! q
内容简介:
+ E! D; U4 h  N& @# P6 a+ F: Y
. @5 ~, V# f% ~& g7 v

  d( |# z! ~" n" F《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。
# R: Y" }7 f- `1 z
& W9 z% y& D0 g《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。* ]( x/ K" p! m6 R: }  _/ B( a

- H4 J* F9 u6 @7 T
* i+ {: I/ F3 e: |目录:
& J) h3 I8 t9 j) v' h1 g8 {( u! E+ `" b


. t# W! N1 C$ D5 {2 M, }7 n第1章 入门 13 R; ?' n4 h2 l0 t
: s7 m1 z# A* y( V" H' p4 m8 N
1.1 UNIX、Linux和GNU简介 1: |, k1 I; j6 ^* [- o
1.1.1 什么是UNIX 1
7 N% x. _. f6 E9 v0 v' F1.1.2 什么是Linux 22 e$ r6 Z+ f$ s4 C- Z3 T# y' J
1.1.3 GNU项目和自由软件基金会 3+ {: x9 ?& E8 Y% V
1.1.4 Linux发行版 3
6 K. z( Q( J9 ~' s1.2 Linux程序设计 4
% F* B7 E8 g2 ^' K) z& n- \- H1.2.1 Linux程序 4
- @* O" m# E; K6 O& i4 P9 `- u1.2.2 文本编辑器 5' ?# W3 u8 b$ z/ ^% P+ O3 G
1.2.3 C语言编译器 5* g3 O2 J  q: m) l) A
1.2.4 开发系统导引 79 f/ m4 I& L0 v
1.3 获得帮助 12, @8 k+ r' j1 Z2 q3 w8 ?6 f
1.4 小结 14
5 K$ k6 N& V) ^
3 C# m* U2 B; G% N第2章 shell程序设计 150 u9 N$ a' \0 z5 V
' Q* P5 ~2 y7 f
2.1 为什么使用shell编程 15
; e  c! p3 b7 h, ^4 Q2.2 一点哲学 167 {. N4 j) V( \, }; v
2.3 什么是shell 165 Q2 P5 W& y8 b/ Q
2.4 管道和重定向 18
* q# W+ l- d4 k; Z2.4.1 重定向输出 18
5 q! X1 ^( u& p' H2.4.2 重定向输入 19/ d  u5 x5 V+ L- U) J
2.4.3 管道 19" E/ ]1 k# L, t5 N% K
2.5 作为程序设计语言的shell 20( t8 v5 ~3 a5 l1 K2 e
2.5.1 交互式程序 20
9 m. c6 a+ o3 T$ j" ]( h2.5.2 创建脚本 21: `4 N  `% i7 k( W* R
2.5.3 把脚本设置为可执行 22: d' s4 l/ B: V8 D3 t" V
2.6 shell的语法 23
+ K/ m  [, i1 k0 g4 B( x2 B4 A9 l5 `4 B2.6.1 变量 23
) R% m/ }/ r# E7 s* _5 L  K2.6.2 条件 27
2 U& y8 A7 ^& v2.6.3 控制结构 29! F' b3 T/ C2 t" w
2.6.4 函数 39
9 \& t1 Z5 y1 y) M0 m# m7 U2.6.5 命令 42) j" @- K+ C2 Q# n  H9 K2 L- x
2.6.6 命令的执行 58
- u+ O. s7 V. F# S4 y* I2.6.7 here文档 616 L$ i6 [; j0 R/ R' d$ E0 `: M7 l
2.6.8 调试脚本程序 63
. s& ~" I: ?. T# ^2 z2.7 迈向图形化:dialog工具 63- r6 Y& w* W9 h
2.8 综合应用 681 S% H! F/ _% ]5 W
2.8.1 需求 68
6 I0 n* W) A1 k3 K8 G2.8.2 设计 68' {& t$ T6 o) \
2.8.3 应用程序的说明 76
4 a! F/ M: [7 k8 k2.9 小结 77
* R) ~7 B2 ?* L
$ G$ k" t- D1 p, F第3章 文件操作 78$ V' n* a$ |) e( z3 G3 O/ M1 N8 |

7 N8 T4 {* o% D# k0 u3.1 Linux文件结构 78
" l5 h$ C; L& b) w: B4 O3.1.1 目录 79
+ j7 k( L& \8 k3.1.2 文件和设备 79
+ [* m" y$ F5 x3 M2 D4 H3.2 系统调用和设备驱动程序 80
6 I$ _7 h7 f/ l% [6 K/ z  ]# ]3.3 库函数 81
, K! o6 K" A$ k3.4 底层文件访问 82
9 r* r' V2 v2 T2 U( w3.4.1 write系统调用 82
( v/ ]1 x& r8 ]2 B5 h6 E9 v3.4.2 read系统调用 83$ X& D3 ^$ z1 i, N3 U
3.4.3 open系统调用 84
4 s7 B9 e9 B+ k, e3.4.4 访问权限的初始值 85! P+ C+ e/ G" h% s  T4 c
3.4.5 其他与文件管理有关的系统调用 88* I3 t5 g. P; f+ L/ J; C6 o0 t
3.5 标准I/O库 918 z7 @9 J  p" z
3.5.1 fopen函数 91
* f. a6 \( l0 r( x) {9 X; x( b3.5.2 fread函数 92
. R' c9 b* O8 g3.5.3 fwrite函数 92
5 ?5 i9 \9 @! D! E& T3.5.4 fclose函数 92* a$ }1 K: v$ m" C% u) M
3.5.5 fflush函数 93
. m6 m8 c/ P" U2 F3.5.6 fseek函数 93$ M) x- _1 \* R% b5 Y: m4 \
3.5.7 fgetc、getc和getchar函数 937 W% M) L* u% i$ \( H( F3 d
3.5.8 fputc、putc和putchar函数 94
! o/ ], H+ T. H' o2 y5 X3.5.9 fgets和gets函数 94
. t# z6 |, \/ B. A, B# y3.6 格式化输入和输出 94, D$ B! T) `* I5 ]% ]
3.6.1 printf、fprintf和sprintf函数 94
, C2 r/ A0 L( d* {! v3.6.2 scanf、fscanf和sscanf函数 96
! G: E0 x& G* @% O* W9 P( P. N3.6.3 其他流函数 98
0 \3 U# y* D5 g. `0 h% w' _* n, E3.6.4 文件流错误 99: f1 k5 ]: A# [- e, R/ I( b# t
3.6.5 文件流和文件描述符 99
& s5 `% @; Y3 y$ p  ?6 K: L3.7 文件和目录的维护 1007 Y2 m* v( C6 p7 s/ k& y
3.7.1 chmod系统调用 1008 y4 J/ `* o/ J9 p# h* @3 A! s
3.7.2 chown系统调用 1008 G/ P% I/ A5 @; [0 M! M5 S1 a
3.7.3 unlink、link和symlink系统调用 100  z3 V! j, x7 B! L; [% q) u9 g
3.7.4 mkdir和rmdir系统调用 101# z3 _8 \- w& I# y) R- ]
3.7.5 chdir系统调用和getcwd函数 101/ [1 I6 S' z. U1 F3 f
3.8 扫描目录 102. C, _! k8 Z/ ^" c  S
3.8.1 opendir函数 102* W+ ^& `# Z0 D. o
3.8.2 readdir函数 102' E# A4 z& l4 f" D2 \  W" R1 a3 |
3.8.3 telldir函数 103( e6 p( Y! a$ O7 ]5 s# w- c/ z$ r
3.8.4 seekdir函数 103% k( ^, X& x- a! U
3.8.5 closedir函数 103$ ^* A. \7 c$ y" P+ ^3 F6 q8 j
3.9 错误处理 106
- L- B" @+ r2 P7 V3.9.1 strerror函数 1067 ^1 \6 ]; Q0 l! Q. l- i5 v; D
3.9.2 perror函数 106" W% C( M  A# p
3.10 /proc文件系统 107, R" L3 V! w1 T+ r
3.11 高级主题:fcntl和mmap 1107 b) l8 w3 l* ]  i* V
3.11.1 fcntl系统调用 110) ~! p9 z* p  w4 A" S2 V; U
3.11.2 mmap函数 111' n! M9 B! E, H8 K/ D% u
3.12 小结 113- p' a1 J: `3 \8 R# Q$ T4 Z1 p
4 T& s7 k  e% C% v& Y3 N
第4章 Linux环境 114  P8 D8 R7 W0 f8 M! O; H: P
$ V- I# P; Q; n  n! r1 f3 N, q
4.1 程序参数 114/ n$ w) V7 E& v9 C
4.1.1 getopt 116
- x+ g- O& Q  W/ t: b* u/ ]5 a) K4.1.2 getopt_long 118
) I+ }5 ]% A* L5 a4.2 环境变量 120
/ w0 @: d9 O! M5 |6 w4.2.1 环境变量的用途 1226 y  @2 z9 ~5 n" g
4.2.2 environ变量 1229 n+ W% F: L/ ~, i% @. @! L7 |
4.3 时间和日期 123+ V8 K) D8 e+ L# O8 G
4.4 临时文件 129; W) k: ?9 G# ?3 v1 x( P
4.5 用户信息 131  F$ }8 L4 s; o& }
4.6 主机信息 1340 Q3 Q" Y: ], f5 c0 m/ y5 T0 _8 ]
4.7 日志 135
+ L/ A" P" C$ \+ t4.8 资源和限制 139
" S' _5 D6 ~: D3 o9 I! @* H4.9 小结 143
" X% `+ V& n5 M- a
' T5 w+ Z) g# c! Y7 H% b0 T第5章 终端 1449 D" }0 v0 y& x& z
5 U& j0 _6 Y3 }5 K. z+ U
5.1 对终端进行读写 1440 {- p  D3 {- ~% R$ K, O9 m
5.2 与终端进行对话 149
1 V" S  Q$ e7 }" `5 n1 O; k2 b0 L5.3 终端驱动程序和通用终端接口 151" B9 |* I7 S$ R0 S; E. e* j
5.3.1 概述 1512 K; S1 g- f; d6 C& Q
5.3.2 硬件模型 1519 J% r9 i9 e+ q3 B
5.4 termios结构 1521 N& G! p$ u0 ]7 J% W& q! j+ _6 P0 K
5.4.1 输入模式 153
# y$ u3 d  Y& d: y5.4.2 输出模式 154+ Q6 }, X9 Q' E! A" C/ F
5.4.3 控制模式 155
4 q) y9 T; V2 p5 @0 y0 t& G$ Z! S; J; W5.4.4 本地模式 1555 E4 D8 B- n! \8 q' w5 B
5.4.5 特殊控制字符 155: ^' h1 M0 }" a* S& ~  B1 h
5.4.6 终端速度 158
4 X0 K- J! W& E5 K; e% C6 \, P% m5.4.7 其他函数 159
6 L1 B) v0 O4 P/ q( u' E5.5 终端的输出 162
( a0 b& A8 R2 z2 Z$ D' I5.5.1 终端的类型 1633 i+ b: A+ W' v4 n+ r8 z$ N" |" N
5.5.2 识别终端类型 163
  N* |: e% h8 I( p& i0 d2 ^5.5.3 使用terminfo功能标志 165' e7 p0 E8 A+ X- D. O  Z
5.6 检测击键动作 170$ C) g( e- w: P2 }8 Q# h5 x
5.7 虚拟控制台 172- N3 v6 U2 c6 @4 g$ D
5.8 伪终端 1736 P+ t% W- k( {% P' T) |$ {! ^0 |
5.9 小结 1743 t  a+ [4 k: t7 Z

6 A3 `0 T3 I: j* I第6章 使用curses函数库管理基于文本的屏幕 175
0 ]: a0 z# W' E- ~" S' Y+ S& j
# |2 O! i) r) G  W$ H( x$ ?) _  A6.1 用curses函数库进行编译 1751 M- x  O1 h' X$ Z/ E3 l( h6 j
6.2 curses术语和概念 176
% ]& v4 U- q! c' o3 d, p2 [: I6.3 屏幕 178
3 l& `- A- s5 D' R+ b7 y7 y6.3.1 输出到屏幕 179$ j: K- F2 k% q. o: J  N
6.3.2 从屏幕读取 180
9 @, N! L* Z8 S9 w6 w0 C6.3.3 清除屏幕 180$ G! m+ y- p. Y2 S1 t. _1 F
6.3.4 移动光标 180( |3 u" L1 q. r* K1 b
6.3.5 字符属性 181
2 ~7 i* s6 t: o8 e: i2 S# g8 |6.4 键盘 183( d5 h; B# q2 j2 K* R/ F9 ]
6.4.1 键盘模式 183" ~7 L( x, q6 ~
6.4.2 键盘输入 184& _! }% A5 {! Q. w! C3 C
6.5 窗口 185# j7 V; e3 z8 J- V. o
6.5.1 WINDOW结构 185
0 ?' h5 P1 R6 G" ^" a3 H6.5.2 通用函数 186
/ O. y; |8 ]. p: u" {6.5.3 移动和更新窗口 187
: ~9 I) k& s! T9 `5 M) i: W6.5.4 优化屏幕刷新 190
: p+ o! y" u0 r" W4 K$ J. p" A6.6 子窗口 191
$ N) s; y  g1 ^9 p* C6 p% ~6.7 keypad模式 193
& v6 L( ~1 i9 ?/ r/ _( v* d6.8 彩色显示 195
+ I& j% V# r: e* g0 v2 {6.9 pad 198
( O' L; q$ ]9 F& G6.10 CD唱片应用程序 200
, M/ r) m/ I' T/ U6.10.1 新CD唱片应用程序的开始部分 200% Y  C# ?. d8 t5 w3 k: X
6.10.2 main函数 202* p0 ?0 y& K) m
6.10.3 建立菜单 203
# j# c# ~  A& R5 |% r0 l& G6.10.4 操作数据库文件 204% O3 r  D5 Q7 V
6.10.5 查询CD数据库 209/ p- y) Z! P  G; g
6.11 小结 2131 w# A" o8 ^# a$ ^% M' i% |
4 z4 V5 H* K1 q9 ^5 ]  z+ T
第7章 数据管理 214
7 ^) V; \4 Y. p* W$ Q8 V% ?& F# ^9 A* G  N  g( [
7.1 内存管理 2147 }& U' K' ^  r9 U/ ?* _: F
7.1.1 简单的内存分配 214
  t, q. F5 ~% B$ d+ Z' i5 ~7.1.2 分配大量的内存 215
- K; t3 B0 t4 j) b& W4 j5 O7.1.3 滥用内存 218
, p) t2 H2 B5 T( e7.1.4 空指针 219
# e8 y5 s  j7 {& l3 s7.1.5 释放内存 220
) B, x' n  l6 ~6 m+ r3 i7.1.6 其他内存分配函数 221
7 e3 V) u/ j5 W' S& P7 o+ a: a7.2 文件锁定 2228 I7 T  t& z8 R
7.2.1 创建锁文件 2220 q$ K! a" [  U8 w' e
7.2.2 区域锁定 2253 M4 Q* T; G/ U; v8 \8 K1 y2 {
7.2.3 锁定状态下的读写操作 2278 X. W0 V$ N. f
7.2.4 文件锁的竞争 232
7 D$ |: g+ \/ D8 g7.2.5 其他锁命令 2362 @+ N* p) c- |$ D8 v
7.2.6 死锁 236
8 Z8 F+ q* w. u5 q+ f7.3 数据库 2378 b5 \; r, \' v, _8 Y# e
7.3.1 dbm数据库 2370 H, u0 x- A0 V2 f% Y
7.3.2 dbm例程 238
% A' ?  F" Q0 |* F2 |$ H7.3.3 dbm访问函数 239
8 H% q+ z. d# B- E7.3.4 其他dbm函数 2426 A3 p0 T* p* }9 |2 y2 Y6 I
7.4 CD唱片应用程序 244
' Z9 K" h. h2 w* j8 g. c7.4.1 更新设计 244
# V( o& P' O! Z2 o5 }, _& `7.4.2 使用dbm数据库的CD唱片应用程序 245
9 d# G' o7 l# r, t# J3 M7.5 小结 262
' r1 i  e0 F1 `' K
- ~# k+ E- j  f5 A6 W第8章 MySQL 2634 c) S, J% e' X3 \& S' [) D

# z: ]9 }+ _6 o3 p8 p" l8 |8.1 安装 263
1 N7 ^  G: r% ]( K8.1.1 MySQL软件包 264
0 o0 M% R+ C0 U  ~0 o' E7 j8.1.2 安装后的配置 2661 a; [; B, e% k# h
8.1.3 安装后的故障修复 270
7 v2 h- I, |$ Q: P$ |# |. X8.2 MySQL管理 270% _; ?3 q2 \! l( N8 ^( g+ o7 F$ d  ]
8.2.1 命令 270' s8 \* a$ U; G3 Q( H/ c2 T
8.2.2 创建用户并赋予权限 274
, \; }9 G" s4 l) J8.2.3 密码 2766 p; q' Z* l8 t3 l8 a1 T' E4 B7 A
8.2.4 创建数据库 276
! z5 N+ A' v: e8.2.5 数据类型 277
7 u/ f  x: o  X% H2 @8.2.6 创建表 278- L$ i2 U5 p& Z0 y. u- ~
8.2.7 图形化工具 280+ e! W$ U/ z$ }  f, Z6 z
8.3 使用C语言访问MySQL数据 283+ h5 ?8 J8 z1 z! }- @
8.3.1 连接例程 283* J9 M% b' Z, s1 _  ^
8.3.2 错误处理 287
* W0 n- L" _) c$ w, ]" O7 X( Q8.3.3 执行SQL语句 288
, G. Q! d: W" I; H# h8.3.4 更多的函数 301" T4 A) X' ~& N& }
8.4 CD数据库应用程序 301
! C6 _% f$ f2 T( @0 Q8.4.1 创建表 302
, |# Q- m' y; O$ b. w% v- p$ a8.4.2 添加数据 304
' r$ @# `" r6 ~) q8 w$ n8 t8.4.3 使用C语言访问数据 3066 z) ^; b/ o9 m- t( O! B2 p
8.5 小结 316# S1 F1 i- _: q( P7 C/ F

% p) W- {3 Z" E第9章 开发工具 317) K- G% u9 D/ {4 p5 g
2 ^, e* m4 d, N, c$ n' ?
9.1 多个源文件带来的问题 317+ H& E/ u4 c: \4 S. I' X8 c3 S
9.2 make命令和makefile文件 318
1 w% N8 C% a! x* ]* i2 V9.2.1 makefile的语法 318: l; ~+ N) d5 s0 ~
9.2.2 make命令的选项和参数 318
9 u$ I4 Y6 \/ `' x; k) Y8 u9.2.3 makefile文件中的注释 321
/ X% E8 o$ l" K; |! L# d$ s! `+ T9.2.4 makefile文件中的宏 321
! O4 O- @1 C2 f: T, h' |5 Q: y, b9.2.5 多个目标 323
, {. m2 M6 X1 F" D8 K9.2.6 内置规则 325
, y8 L* B6 b+ {6 d& o$ ]$ q& F# o9.2.7 后缀和模式规则 326  n; ~. ~- ]. A/ L0 S8 Z9 ?5 S
9.2.8 用make管理函数库 327. ?) Y/ V5 x. L' P
9.2.9 高级主题:makefile文件和子目录 329
# {7 H% F5 M! M/ i/ I1 s9.2.10 GNU make和gcc 329
; `8 _4 g) W1 f. k  |0 m9 z! R2 d9.3 源代码控制 330
4 `( @/ z# F- c8 f  P* T9.3.1 RCS 331: t* v! H8 x1 q
9.3.2 SCCS 336
0 t/ |" P1 U+ v9.3.3 RCS和SCCS的比较 3360 W3 J, X! E, @* d
9.3.4 CVS 337: b# Z6 V" p) s3 @! G/ x, ]
9.3.5 CVS的前端程序 340* v) t$ Z0 a0 b6 ?' W/ k
9.3.6 Subversion 341* L: {9 O# ?7 d3 W; ]
9.4 编写手册页 342# `6 B& q6 T& K9 U" I' f
9.5 发行软件 345) b/ S: p  S$ u$ r4 _
9.5.1 patch程序 345" Q3 i  x" Q9 j; E- R. k- C% j
9.5.2 其他软件发行工具 347
( C% Y) [% T) H7 k9.6 RPM软件包 349
5 ^/ M$ S. q& y/ W( d9.6.1 使用RPM软件包文件 349
+ R/ W! a) d  p. j9.6.2 安装RPM软件包 350
+ U- O" D0 t6 Z' d9.6.3 创建RPM软件包 350/ n8 ?- J& K- |% y& M' l
9.7 其他软件包格式 358! C& [) D6 i4 ~# {, r% B
9.8 开发环境 358: O; ~+ ]0 c# q2 Y$ Z' H6 n
9.8.1 KDevelop 358; G$ ]+ Y" i, r$ _6 S) P' X
9.8.2 其他开发环境 360
" l. o$ a! n' G0 G$ h9.9 小结 360  l5 [# I9 O, Z& V' I2 @
- W9 U% {( I* D0 k' n
第10章 调试 361& y- f. L8 f1 M  \0 o
/ W9 Z3 P; V' C
10.1 错误类型 361
) x; I3 k3 M6 N9 H* G! Q- Z1 ~! V10.2 常用调试技巧 362
" }( c2 l5 u- l; B! A2 X10.2.1 有漏洞的程序 362) {7 A8 ^! c2 c+ G- t# ^& Y1 c
10.2.2 代码检查 3645 j0 V3 P# f; Z- B
10.2.3 取样法 365
: J& n. a8 p0 g. d# f6 M! y7 N# N10.2.4 程序的受控执行 367
- f* ?2 J0 W( X( v( E10.3 使用gdb进行调试 368
) V' t8 U/ G; n4 Y# U10.3.1 启动gdb 368
1 P, c1 w0 g# Q. v. [" z! N10.3.2 运行一个程序 369+ r9 g, D. [3 f* H& U
10.3.3 栈跟踪 369
8 n8 Q0 g: x9 G0 S& x$ T, Y10.3.4 检查变量 370* I0 W6 t. Z& b
10.3.5 列出程序源代码 370( e& u! w4 ~1 ?& a8 i  K1 n
10.3.6 设置断点 371
* r6 P! \2 F6 H4 ?8 Y' @: ^10.3.7 用调试器打补丁 374
$ u  s1 X! W# f6 L) k+ k10.3.8 深入学习gdb 375
4 h5 |+ X( v9 N9 ?7 a; s10.4 其他调试工具 3755 V* {# j1 E# h
10.4.1 lint:清理程序中的“垃圾” 376' B; ]- |! `! O' _
10.4.2 函数调用工具 378( C+ }* e# Y0 }
10.4.3 用prof/gprof产生执行存档 380: L! h- k' Q8 \& P' V
10.5 断言 381
7 ^. E( z# F) @* L10.6 内存调试 383' I& f' J" m$ q: Z0 b( t% Q# d
10.6.1 ElectricFence函数库 383
2 W. b/ n  m* a$ S1 W10.6.2 valgrind 384
) P5 I& }1 c, k4 w% ?10.7 小结 387
: W, p  ~8 ^) W1 V1 n* p. I
7 M% o/ z  v, w第11章 进程和信号 388+ ^: m9 ~9 v+ G+ P+ f

4 m5 z) d# O8 _! S' w5 u' P& P6 T11.1 什么是进程 388
; ?7 {- h: c( d7 C5 v11.2 进程的结构 388
1 x0 Y) X& P$ w# D4 \$ Z11.2.1 进程表 390
% ]1 s5 i* G- ^4 K( A1 e1 R8 b11.2.2 查看进程 390
; c7 A! q# ]0 f1 d+ U- L  i11.2.3 系统进程 391! R; C- P0 N% h$ G3 |
11.2.4 进程调度 393, b# a8 ^  b( S1 E
11.3 启动新进程 394' Q' s  S4 r6 J* a- D$ m. g
11.3.1 等待一个进程 3994 k( K/ h- E7 P  z9 n
11.3.2 僵尸进程 401
. G& Y) o3 G& k; Q3 M' F. i2 E- L11.3.3 输入和输出重定向 403) O2 C( c4 S* Y4 Z
11.3.4 线程 404, ~$ X; @. h+ F1 `4 M/ B
11.4 信号 404
5 u( x: b' r% ~& N: C0 n11.4.1 发送信号 408  I3 i+ _! d. K- o6 ]. S
11.4.2 信号集 412
; F$ a' ~: k( [7 ~. D& F7 B# W11.5 小结 415* \9 W  }3 e2 C* C- k( e
9 y# F2 H0 _! l  j- I& }
第12章 POSIX线程 4160 ]! T# b" X( S3 M7 d
1 W8 F3 W* |6 g
12.1 什么是线程 416' Z  H2 g5 g% O! H/ a: f; `
12.2 线程的优点和缺点 4178 i# x* C7 x2 x% _6 k1 F
12.3 第一个线程程序 418: \  h2 C0 @* e8 G
12.4 同时执行 421
/ m( E9 t; T! j9 X- k, Y1 y# {12.5 同步 423
* \( d/ y# D! R2 [12.5.1 用信号量进行同步 423
8 O# |  x5 R# X' s4 \12.5.2 用互斥量进行同步 427; y* A2 [! x% B
12.6 线程的属性 431
: g$ h1 L/ u4 p4 d. s7 O# p12.7 取消一个线程 435) F; _3 J% }. R( E0 V) |  r
12.8 多线程 438( R$ T2 h4 {1 Z8 G' m7 ^3 z
12.9 小结 442- V  A1 R/ A2 p; k* A2 l( T5 Q

4 A; ?$ Q$ q9 g" _/ C. p第13章 进程间通信:管道 443" I: F! w$ d$ q8 {* `/ R; C
* h/ ]* p, z7 i. y
13.1 什么是管道 4434 L; [' r1 w0 H1 h0 M( }) X+ n
13.2 进程管道 444
  c1 O* S+ ?3 ^# o$ m13.3 将输出送往popen 445
6 C* P/ y) J' x4 b4 |13.3.1 传递更多的数据 446
$ A& s9 a& ^8 L9 t, ?# u5 |13.3.2 如何实现popen 447
9 \" ^8 u$ ^8 g! H' h* z13.4 pipe调用 449
' u; j& x( Y. F/ ^: z13.5 父进程和子进程 451, T, D$ k, B6 Z8 {0 X& G7 y" B5 D
13.5.1 管道关闭后的读操作 4531 r3 r' w6 q8 F3 `. m
13.5.2 把管道用作标准输入和标准输出 454* Z9 a$ K7 j7 X; b$ Z$ [; g) m6 ~
13.6 命名管道:FIFO 456
  {7 S$ F) Y5 b13.6.1 访问FIFO文件 458
3 N% O0 F: k4 ]4 P13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464
  p( {6 {- Q* |13.7 CD数据库应用程序 468: r) t8 F5 m- G
13.7.1 目标 4695 R8 A5 o: {6 V* Q5 V1 k
13.7.2 实现 469
0 W& A5 H5 a& G) v; E# }13.7.3 客户接口函数 472
- s8 ]2 c6 f5 J( D: I. f13.7.4 服务器接口server.c 478
5 ?; p; }+ D; A1 G& c( L& \& n13.7.5 管道 481
4 d2 q; x1 m0 x! E( \5 C( S13.7.6 对CD数据库应用程序的总结 487) l2 |. I* q/ [/ P9 \2 r: }$ I
13.8 小结 487$ A; K. R+ K% {

$ b! R! X5 `2 |# t' S9 I! s第14章 信号量、共享内存和消息队列 488
3 W0 a7 \2 \+ n+ h/ F8 ]( [) R, @* y. ]/ P, \7 p3 O
14.1 信号量 488
4 W; O8 O( t  |14.1.1 信号量的定义 4899 ?- {7 z6 y# x" c/ D
14.1.2 一个理论性的例子 4891 ]0 {% L8 C  Q7 U$ y8 T
14.1.3 Linux的信号量机制 490' M6 Z: K2 W1 b' X9 ^) N8 Z: g
14.1.4 使用信号量 492
4 H1 S( q* J: m0 I14.2 共享内存 496
1 A: O& d: K# r+ P9 s/ P8 s14.2.1 shmget函数 497
& f4 P* K: T- Q14.2.2 shmat函数 4976 N" w7 B; u. E0 d# a5 \, C  p
14.2.3 shmdt 498  }. k4 H" g& Q6 G5 Y+ o# P
14.2.4 shmctl 498
# Q5 ]- r7 |  C1 a5 Z2 O5 |14.3 消息队列 502: z3 X, k. @0 R0 ?! z! c5 E
14.3.1 msgget函数 502
+ T$ I5 D' I' N14.3.2 msgsnd函数 5035 `( c( t# {: I% }" v
14.3.3 msgrcv函数 503& I  {; T# |6 n6 n% ?
14.3.4 msgctl函数 5048 w6 y. d/ V' _: J
14.4 CD数据库应用程序 507: t+ ]" ^( s$ \3 X8 R
14.4.1 修改服务器函数 507
$ b5 i- ]+ s0 Y, `14.4.2 修改客户函数 509# y! t; t3 l1 ?3 }2 o
14.5 IPC状态命令 511
9 S5 M: C! Q% S9 E14.5.1 显示信号量状态 511
2 E+ I" C) B% a0 }. ~14.5.2 显示共享内存状态 511" y2 E7 {" p8 }" y
14.5.3 显示消息队列状态 511  k' P4 {3 I  f8 F( N7 U7 O
14.6 小结 512
4 x5 j3 {- g0 S& z* |, f2 c/ S! M, j; X2 q" p7 S5 j) d# P
第15章 套接字 513+ `: A" m! ^( i
; f  _& G# I1 i: A9 j8 C, m1 G6 T
15.1 什么是套接字 513
$ z# p) P, F0 @  R5 ~15.2 套接字连接 513
$ H& \/ L2 C  T- |, ?, E& a15.2.1 套接字属性 517
' ]  A3 a! R7 }7 P15.2.2 创建套接字 519
, h. J# B7 ~( r/ ]" ?) o2 G15.2.3 套接字地址 520% E' W4 Q# u! X1 o
15.2.4 命名套接字 5209 I9 ^% _+ T; x; O1 e( x. S
15.2.5 创建套接字队列 521* U+ g; L( _) K& c; r
15.2.6 接受连接 521# C1 R: Z( u# L: }% k
15.2.7 请求连接 522
" e8 G0 L7 g- v$ j( E15.2.8 关闭套接字 523
( l6 e* b/ f! p0 m15.2.9 套接字通信 523
8 b! n/ J, m  Y7 J: ?. g15.2.10 主机字节序和网络字节序 525. `: _2 h9 {6 P, `: F, i) u! a
15.3 网络信息 527
& a- l  n; I2 d" H6 T& j% `15.3.1 因特网守护进程(xinetd/inetd) 531
4 q2 w. A# A# D# N* i6 u15.3.2 套接字选项 533
0 x1 [4 Q7 k$ _; A3 }; y15.4 多客户 5346 @4 S1 e$ b* y( C1 |- b9 j. ~( Y
15.4.1 select系统调用 5377 ^+ I' I% ]9 _2 y. r  [
15.4.2 多客户 540
, o- k2 b! X8 {& g0 Q% C0 A: D3 u15.5 数据报 543
0 a3 m! \, e  F0 E15.6 小结 545
# V3 T7 ^- l. s% O% l# K: @, B* k! A9 X2 p; p
第16章 用GTK+进行GNOME编程 5461 r* A, R2 i& n! l5 w
0 h  \8 [. j* N' m1 P. E) @6 v
16.1 X视窗系统简介 546
7 ]0 {; _9 B7 \! D16.1.1 X服务器 547. s1 f' B# U: \
16.1.2 X客户端 547$ `% o( b8 S. Q; I' d. G2 O
16.1.3 X协议 547
) D9 f4 k: N1 {6 [' X7 e& h3 V: ^16.1.4 Xlib库 547) d" D* K" f7 U# h/ g5 n; H/ G7 s
16.1.5 X工具包 547+ O7 l0 D( w; P1 h' m4 v
16.1.6 窗口管理器 548  p2 g7 b" p6 f# Q
16.1.7 创建GUI的其他方法——平台无关的窗囗API 548& N6 p- ]6 q" _; N) M# A
16.2 GTK+简介 549
# }: C/ C' |4 s4 g( d16.2.1 GLib类型系统 549
. C9 H6 _* g1 O0 |* @* Z1 x8 A& c16.2.2 GTK+对象系统 550, W# U1 q6 X- A, C6 Q" M" o# O( |
16.2.3 GNOME简介 550( s1 t1 F3 M# t# H8 W* w
16.2.4 安装GNOME/GTK+开发库 551* ~. T- ^+ q! B: d2 h" z4 w+ E$ ?
16.3 事件、信号和回调函数 554$ Z& ^! i: N% e6 [
16.4 组装盒构件 556
' p4 v: d, b' d6 Y' a' n16.5 GTK+构件 559/ q0 O. o; L$ Z& Z2 q4 L
16.5.1 GtkWindow 559+ p) q+ X: m. s; K, v5 Y& m
16.5.2 GtkEntry 560
( w7 j* U! ^: Q4 B16.5.3 GtkSpinButton 563
6 v! V7 e/ T6 V7 n+ _- N4 f2 K% s16.5.4 GtkButton 565
' P  C8 A+ R0 P16.5.5 GtkTreeView 568
, Z, O, P0 H) @! w16.6 GNOME构件 571
4 ]  }  O3 v" n6 ^' r4 u16.7 GNOME菜单 572
4 K% B5 B& [: @" |* \16.8 对话框 576
' Z# Q. Q0 [$ @+ `2 n/ K* Q16.8.1 GtkDialog 577
/ P# X% k( {9 q/ g( s7 h16.8.2 模式对话框 578
3 E2 Q- i* ~7 x16.8.3 非模式对话框 579. |9 r3 s2 r: z1 f/ G
16.8.4 GtkMessageDialog 580
5 R3 ^' r3 h$ o3 u- A  b; B5 t% }16.9 CD数据库应用程序 581$ D; J& Q; e" y9 T5 P+ G+ L
16.10 小结 592" r# h$ t8 |' B/ S; Z9 l
! X. Q3 {$ z! [; r2 K
第17章 用Qt进行KDE编程 5933 T% K8 T' a2 S. A- ^% K. r3 u8 w

) I, v! i: _$ B; e  A8 U17.1 KDE和Qt简介 593
4 H- `% j. {( s1 `. f1 [17.2 安装Qt 594
: k& T4 w  `0 P$ s  F' a17.3 信号和槽 5968 M% Z& @# E1 \. m: D
17.4 Qt构件 602' s4 \4 M. _  B/ J: i  ~2 t
17.4.1 QLineEdit 602
, G2 P) y. p9 K1 C17.4.2 Qt按钮 605
4 ^& t1 k& [- Z& `17.4.3 QComboBox 6091 c1 C+ \" H" q. R& l% ^
17.4.4 QListView 613
4 w. ?/ s/ x2 X17.5 对话框 615: h4 R* Z% @/ ]* N0 {6 a
17.5.1 QDialog 615
. o. q+ L3 b: U3 O17.5.2 QMessageBox 6178 l+ Q0 V( n2 j/ D* Q/ Z
17.5.3 QInputDialog 618
8 ~% n5 u+ J# a+ d2 h7 ~& D17.5.4 使用qmake简化makefile文件的编写 620
3 y& |( p+ G- K+ Q. V$ U% x17.6 KDE的菜单和工具栏 620/ J% k) L7 s7 r0 c; p) e9 {! M  `- e
17.7 使用KDE/Qt编写CD数据库应用程序 624
. l0 C! \# }8 ?4 ^: L7 V$ w1 _1 N17.7.1 主窗口 624
; Q2 {$ u1 |" _2 _& M3 ^, _; e: f' k17.7.2 AddCdDialog 627
. R+ w( u1 q7 [# f1 o0 ~17.7.3 LogonDialog 629
( w1 S; }. m: n# d# u1 Z$ [17.7.4 main.cpp 6303 d1 X; F. w6 `! ~3 M3 t! R
17.8 小结 632
" [+ \" c% H  O' n/ p/ A) A " h6 N  f! Z* b1 ^
第18章 Linux标准 633
2 S% d- n2 f8 B2 p
4 A9 |4 I9 X! i: v3 W18.1 C编程语言 634
8 S* B# Q. D) z/ P18.1.1 发展历史简介 634
9 Q6 L/ c  p7 L18.1.2 GNU编译器集 6340 Z) s# t; R* f( ^, A! {5 ^; P. m
18.1.3 gcc选项 6355 g! E; T1 {0 j! s  y# p) a& [  F
18.2 接口和LSB 636) ^. ?3 m1 [- O9 ~  j
18.2.1 LSB标准函数库 637
  e& D5 C3 s6 A- Q2 p18.2.2 LSB用户和组 638
# n4 Q: L6 T5 j, b! E1 x8 F18.2.3 LSB系统初始化 638
) S) Y( p, F; q1 n( ^; `& Q% Y/ p6 h: i18.3 文件系统层次结构标准 639
" ^- A. Q( {+ b$ |18.4 更多标准 6429 P" [/ ~( i% H/ s( u
18.5 小结 642
3 e# x  d/ a' u0 U
# u: b+ a& Q" }% ^/ B
0 T! e: Z$ f, x& B

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
wrz + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-30 20:48:01 | 显示全部楼层
这本书不错,讲解详细,值得一读
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-8 00:08:41 | 显示全部楼层
这本书有没有电子版的呢//
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-18 18:32:35 | 显示全部楼层
看起来是不错啊- `) r$ v# J7 X5 Q- L
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-5 15:52:54 | 显示全部楼层
经典,没看完呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-4 14:51:53 | 显示全部楼层
c中精华
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-23 10:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表