鱼C论坛

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

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

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

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

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

x
TB1SlhmMpXXXXX7XVXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg
3 Y. `* Y8 I0 N# X5 x

# `$ S. H8 o6 w1 u( V书名:《Linux程序设计》
9 K1 Q: s! e4 I( e作者:马修 (Neil Matthew),斯通斯 (Richard Stones)
* d( P! Y* m% Y+ D译者:陈健,宋健建 - D; q6 I7 T. {& I! }' K
出版社:人民邮电出版社( N( J; q9 h( B+ c
出版年:2010年6月1日(第4版)3 m9 u/ J4 Z5 W- p6 E- [
定价:99.00元8 Q* K- Y9 R& l3 ^4 v5 W
装帧:平装
; Z; ~1 t/ I. X% x# o* wISBN:9787115228215# H; m* d9 U. |
' B9 m5 @7 w6 H; h* |4 e
购买链接:4 v+ i" m, t1 l5 m9 ?

' X! i0 v% V5 `- p1 O0 B8 ^

- M. a9 @( k" W0 Y6 E亚马逊(Kindle)-> 传送门
6 U/ e) W( J  C0 `. W% Y+ d: \& E7 |! l( E  \1 Y
亚马逊 -> 传送门3 ?4 I1 ~/ B3 D. W# e9 A* D
9 U3 u$ V% K) P' r
当当网 -> 传送门
, i% ]  ?8 m$ V0 x& \. u: ~# b4 z) x
5 m/ s6 M8 K/ h) f! r京东 -> 传送门0 f6 ^4 k  B+ i) I* w2 h

& {; c* |' k4 Z2 c天猫 -> 传送门# j& a# \+ R8 U+ [
! n  E1 O6 }0 \- D1 n9 B% t
; a0 t% Z9 g9 Q' Y
内容简介:
2 q, H5 w: _8 \0 Y7 }
$ q/ {$ _/ y/ g! S0 w0 s& K3 q; `
3 n; `$ Y& c1 H' X3 R
《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。" W6 x3 U" Z2 z, k
1 m$ _; b5 [' K1 ~) E# I6 \# `
《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。
$ R9 `' I1 @$ o) t& e) U- s* N' l) N% T  w+ L% W: ]# r2 m
  _% ?6 r* f4 I
目录:( Y/ [( ~+ L6 B! M
! [& P: Z( M8 u/ S" Z

" T% A; y4 I8 y% X: Q0 |9 ?2 [) V7 G) K
第1章 入门 1
; R% E6 ]) b3 g
- l9 E. c. q8 t$ |5 U1.1 UNIX、Linux和GNU简介 10 f0 S; x; `4 l
1.1.1 什么是UNIX 1+ y: n# P  {0 m4 L1 u/ _" U- Y
1.1.2 什么是Linux 2
9 p& l8 e% _  ]0 C1.1.3 GNU项目和自由软件基金会 3( Q9 C" [: C5 G: [5 E- `
1.1.4 Linux发行版 3
) A0 W/ I8 A& G* y2 V( y& ^1.2 Linux程序设计 48 j/ v$ l" R4 N# S/ t+ @
1.2.1 Linux程序 4
7 Q9 Q( b0 k7 M+ B+ `2 ~; }/ E. y" j1.2.2 文本编辑器 5
! u( c1 ?9 f* p3 K) o9 f- o2 B1.2.3 C语言编译器 5$ d2 t4 j  F, r5 E
1.2.4 开发系统导引 7" w% q" h$ T/ Y
1.3 获得帮助 12
9 c. p, V7 `$ m1.4 小结 144 D; v3 |7 k1 t0 b7 f5 ?* ^5 B, ^

/ m( a" d! u& C* L9 }第2章 shell程序设计 15
$ j8 G4 M2 f) i2 m9 |5 ^* I% C) v" c' R+ _. D9 W
2.1 为什么使用shell编程 158 K+ Z7 t# A* R+ G, @  u
2.2 一点哲学 16
" B0 j8 k) Y% g( r& [( [7 x" {2.3 什么是shell 16
) J* K) i# L) }. S1 X8 Z2.4 管道和重定向 180 x( H8 K( n" s$ m2 g6 d
2.4.1 重定向输出 18+ t% D- F3 p8 j
2.4.2 重定向输入 19; a' `! u. {3 K- Y1 z* |
2.4.3 管道 192 d" n  f% Y4 _0 s& C$ H, E
2.5 作为程序设计语言的shell 20
& h, V- q4 E0 b& w' G! a$ I8 u2.5.1 交互式程序 20) M! y% M3 A+ k7 C0 f3 C; y! h
2.5.2 创建脚本 21
+ r9 C. z5 P: Z% n. `9 R: Z2.5.3 把脚本设置为可执行 221 |( G* k, F  f! a: o& b
2.6 shell的语法 236 C9 k9 U, O% n1 k$ E" l( i; r
2.6.1 变量 23: x5 x- [' @4 s
2.6.2 条件 27
8 s- l( N- x+ y$ `( i2.6.3 控制结构 29  i% r: E+ S8 ^4 I4 k$ N8 ]$ s( V
2.6.4 函数 39
! I' _0 G- u; h; y' r  n6 _2.6.5 命令 42/ u9 p1 X3 l. B( [+ t
2.6.6 命令的执行 581 W9 k; f4 A: e, g' i3 K
2.6.7 here文档 613 L$ ]% U0 O/ H
2.6.8 调试脚本程序 630 h) J1 @/ z0 \7 `) _" M& q
2.7 迈向图形化:dialog工具 63
0 Z+ ?% u4 X5 x" i4 S2.8 综合应用 68# W- m+ k" T. B1 s4 C- a, [
2.8.1 需求 68
8 y0 Y0 Y0 [, g# e" o4 }$ H! D2.8.2 设计 68' C' e) |5 i, M
2.8.3 应用程序的说明 76$ Q6 V. q" F: u  i* n$ z
2.9 小结 77
) q" `6 W* S1 ?: T$ u' @
, n% `6 d9 R: Z, p& _第3章 文件操作 789 q% T6 v6 @5 E) \* L! R9 _
" Y  c# R0 R8 T7 _' t* n+ n$ _
3.1 Linux文件结构 78
* k- Y( l3 i6 u: @* @. g9 H5 R3.1.1 目录 79
' D% w6 l2 }" N' Q3.1.2 文件和设备 79( b; v" k8 Y: y5 U3 S
3.2 系统调用和设备驱动程序 80
, c, L) R" M! w+ @' `! N3.3 库函数 81
# \" E/ C" P3 u: t$ e' {' m3.4 底层文件访问 82
. O6 T9 K# [1 |3.4.1 write系统调用 82
: [& [8 U: b1 n3 F6 {) S3.4.2 read系统调用 83- m; `8 L/ B3 L4 t6 O# K: o
3.4.3 open系统调用 84: E/ ]! L' Q6 H% b, H
3.4.4 访问权限的初始值 85
, C; b  c  X2 N) k  q0 R% s3.4.5 其他与文件管理有关的系统调用 88
; v% Z; e5 t1 e" e0 @. A; l3.5 标准I/O库 91
9 I+ _; j$ {8 ?! @3.5.1 fopen函数 91# |/ t; S, Q0 L  G0 i# h
3.5.2 fread函数 92
+ m) d+ y9 L/ ~9 O; H3.5.3 fwrite函数 922 }, ?% X+ l1 u6 t6 N0 v
3.5.4 fclose函数 926 c1 @! _+ n- ?: F# L& v) L& I0 \
3.5.5 fflush函数 93
7 p; Y; Z4 g, I9 s* I3.5.6 fseek函数 93: v4 ^) ~2 ?6 e+ q3 m% J, s/ X9 z; V0 C, S
3.5.7 fgetc、getc和getchar函数 93
3 H, h5 ~, X' o1 r& ]6 C2 j3.5.8 fputc、putc和putchar函数 94- B9 G% ?0 X& t- s! ?; H0 ^3 m
3.5.9 fgets和gets函数 94
2 q" U3 {4 O5 ^2 W9 u- O3.6 格式化输入和输出 94& J: O) ~+ l1 P* D$ j: A
3.6.1 printf、fprintf和sprintf函数 949 \* Z* x- }& C' n+ D0 W8 ~
3.6.2 scanf、fscanf和sscanf函数 96
( ^6 F: `5 c7 t1 Z! o+ k0 i3.6.3 其他流函数 98# C% ?6 z3 d  ^& ^
3.6.4 文件流错误 99" [/ S) b# I& f! p  Z& X+ d  b0 I' {
3.6.5 文件流和文件描述符 99
, T7 _2 X& f1 E8 q3.7 文件和目录的维护 100
6 t$ C6 A3 G' Y3.7.1 chmod系统调用 100; m* F- j1 d. K! J
3.7.2 chown系统调用 100
8 s" p. p7 E0 b$ r+ ]) [' Q" j3.7.3 unlink、link和symlink系统调用 100
, i/ v1 X* A7 Z2 t( T/ Q# J! w3.7.4 mkdir和rmdir系统调用 1017 \! ]  ?( a  `/ g" h
3.7.5 chdir系统调用和getcwd函数 101
1 ~2 G0 C% L8 q3.8 扫描目录 102' R- F" X' e4 o: V" I1 u4 x/ O
3.8.1 opendir函数 102
5 a/ e' M1 ]0 n! F5 Q. y3.8.2 readdir函数 102
0 C2 {, L" W6 |$ t8 G3.8.3 telldir函数 103: w& L) L& z( n3 G
3.8.4 seekdir函数 103
0 G7 T; q" `0 h  m; U0 I0 \; Q3.8.5 closedir函数 103
7 {% I$ O" s; x9 F3.9 错误处理 106, }- p4 \9 V1 H2 [5 h' a
3.9.1 strerror函数 1062 D' y. G$ A/ ~( T
3.9.2 perror函数 1067 R* ]1 M) _* B- r2 `- ?  f
3.10 /proc文件系统 107
  c1 |% g0 k5 u5 k3.11 高级主题:fcntl和mmap 110
  B, z* B! M9 d, D3.11.1 fcntl系统调用 110
3 B0 F1 U( B2 P/ y0 d- O( T3.11.2 mmap函数 1118 e9 |' \% |& B/ G7 A8 ^+ I
3.12 小结 113: e9 N6 m  }/ x* U! ]

* Q# X' m& Q$ Z+ ^7 f第4章 Linux环境 114
) e- y/ x; K$ q: B1 g# G  ]' f, w1 z) j9 T  Z& [; S$ j$ V
4.1 程序参数 114
# C/ H! H( I* @& K' d) o& ~; z) |$ g  S4.1.1 getopt 1163 S& w1 C1 {# x( R9 Y. q
4.1.2 getopt_long 1184 s* v- ]" v. b/ c7 T
4.2 环境变量 120
9 N  x3 B7 \6 V/ H* y( S6 X# e4.2.1 环境变量的用途 122
! z% M. m$ K' n  D* P  ?4.2.2 environ变量 122" j* i7 }* x& v2 c+ b
4.3 时间和日期 123
/ w4 B3 E: y8 ~" Q- s4.4 临时文件 1293 L' u1 ]7 y8 q) Y; A- I
4.5 用户信息 131! V3 T* N6 c9 O5 V( a! o0 l3 h
4.6 主机信息 134( W& z8 K) g' s) S$ g+ r: n
4.7 日志 135) T* \* m8 d3 Q! t( g, {  T
4.8 资源和限制 139" j  D- c  x" N) m% j& J
4.9 小结 143* L0 y* i* U1 C, b

* P9 k' o- y4 g9 O2 w第5章 终端 144+ [0 o& |  c# i1 P" ~; M( H0 ^, A/ V
" D* ]: \9 J$ d. D$ @- u
5.1 对终端进行读写 1444 A- T- K/ c. X" \1 g8 K$ }
5.2 与终端进行对话 1494 N$ j3 T# ~5 o& \2 g4 E, t
5.3 终端驱动程序和通用终端接口 151% E! y. w; d/ K1 s, S; e& n" ?2 U9 f
5.3.1 概述 151) ^! j; h2 ], G2 a" v
5.3.2 硬件模型 151. s# H/ x! B: ~; h8 m
5.4 termios结构 152
# H/ U% ?- ?- F* L5.4.1 输入模式 153
! U6 L0 d" U2 D# j5.4.2 输出模式 154
) Y3 h+ `3 V9 `, S1 I5.4.3 控制模式 155: e2 }7 ^- E! C( o
5.4.4 本地模式 155
; ^6 l( \# j$ A: l5.4.5 特殊控制字符 1553 Q, G$ f, T9 Q7 |: C$ z% B9 b: F
5.4.6 终端速度 158
$ b# r$ y2 M7 o  ?! A) }/ D5.4.7 其他函数 159+ A: p8 m) r4 R, w
5.5 终端的输出 162
" q$ S7 g  C7 n* z5 D% w5.5.1 终端的类型 163+ \8 M$ X+ u2 d5 s1 `/ h. j3 T
5.5.2 识别终端类型 163
+ l: B6 @$ R* h/ E9 G5.5.3 使用terminfo功能标志 165. }6 s1 q$ e% J/ |( U( U
5.6 检测击键动作 170. _: m5 p* Z* F' T
5.7 虚拟控制台 172- \- x6 q7 Q) p9 _! Q/ F0 Z1 |2 w3 z; S
5.8 伪终端 173
0 m, d& K  R3 E5.9 小结 174
- h9 e2 |0 U  r- C& C5 e 6 f1 j! p& m" k: O$ O
第6章 使用curses函数库管理基于文本的屏幕 175* l  p* q2 u' Y# y8 _' [
1 f# ^* J0 u- o/ p4 t, e' V- V" F
6.1 用curses函数库进行编译 175( s  D1 c; ^5 p8 l3 k5 }( k: o
6.2 curses术语和概念 176# p: p, P4 B' n1 g4 t
6.3 屏幕 1787 B9 b( C" j: ^/ M
6.3.1 输出到屏幕 179$ J( S4 W2 t1 |0 J4 C3 F  ^
6.3.2 从屏幕读取 180
( o( X  Z: {# p1 r0 @% {6 b6.3.3 清除屏幕 180: g- e$ G- _8 t% b% ]7 ]
6.3.4 移动光标 180/ g. {  y7 N7 X/ H: R8 f% S1 l+ G
6.3.5 字符属性 181# b6 I- g6 x7 W* r( P. a3 ^
6.4 键盘 183+ P9 o) O9 J& o2 V
6.4.1 键盘模式 183
( i: `7 O6 x5 b. N9 S2 x) Z6.4.2 键盘输入 1847 C1 K9 w& x9 k* ~9 a
6.5 窗口 185
% [! l# Z, f: T. G3 i* M' O& \6.5.1 WINDOW结构 185
/ k( r8 H, j1 V3 X* G6 x5 X6.5.2 通用函数 1866 I! R- M8 ^3 @7 B: R
6.5.3 移动和更新窗口 187
% ~; n6 n3 Y* d# h# A' W* U3 _6.5.4 优化屏幕刷新 190' g$ t9 n( m! c3 L! [
6.6 子窗口 191
( ~; [( A4 |$ p% [! v6.7 keypad模式 1934 Y1 l* h& b5 {0 r
6.8 彩色显示 195, x" |1 e" K2 X- j
6.9 pad 198' s" y& t0 \: l  P* V6 Q8 @* g
6.10 CD唱片应用程序 200
+ o8 O5 d4 ]; X) T' g6.10.1 新CD唱片应用程序的开始部分 200
2 ~; L9 L# y7 T1 C+ t; J4 ?6.10.2 main函数 2021 z: S7 v7 h+ R) K( V. [; D
6.10.3 建立菜单 2036 C' ~7 |. `  J# h
6.10.4 操作数据库文件 204; A9 ~/ d' h7 a$ N# C# |: z
6.10.5 查询CD数据库 209
+ T  f# K) A/ H, D1 H5 J6.11 小结 213
+ c; K: d, O$ X( }
/ t; A# G% v/ V9 v- P7 z& V/ o" r第7章 数据管理 214
( l; t9 y# T. x: d2 p; ?; n; j3 ]3 h
7.1 内存管理 214- [) E/ r% s" z! l2 _
7.1.1 简单的内存分配 214
. J5 R0 M- R8 G* j7.1.2 分配大量的内存 215# \- R! Y3 s8 L0 o, g
7.1.3 滥用内存 2187 Z4 }" Y9 _: _: p0 G& k
7.1.4 空指针 219
; n! T8 ?& m  O& s% j. {7.1.5 释放内存 220
$ c8 }# q1 o8 m4 m7.1.6 其他内存分配函数 221- M# ?1 {+ v" w& l- M( T: d2 N
7.2 文件锁定 222
. q* h  X8 z" v7.2.1 创建锁文件 2226 F& ^4 S: r& Z7 @5 e6 p/ w6 `
7.2.2 区域锁定 225- c1 ]0 z! H' Z  e6 S! X
7.2.3 锁定状态下的读写操作 227
5 u: x, U; @" P8 m+ N7.2.4 文件锁的竞争 232& R1 G' r4 Z2 g6 ^% v' E+ V
7.2.5 其他锁命令 2369 _* j) I9 q% P$ P6 C+ C
7.2.6 死锁 2363 w8 ]1 U6 ^- T4 ^, |4 b
7.3 数据库 237
8 i1 G* V( v: S7.3.1 dbm数据库 2378 v4 ?- T1 R0 [
7.3.2 dbm例程 2387 ]( Q  j0 h8 f2 Y( p
7.3.3 dbm访问函数 239
* N+ y& Z& o% [: {  K8 f; W7.3.4 其他dbm函数 242
, v9 u3 }  P( x4 q' l5 [7.4 CD唱片应用程序 244' k) ~2 E2 }7 N: @2 L# L
7.4.1 更新设计 2446 c! G) C6 g: T, [% V4 O0 [2 V
7.4.2 使用dbm数据库的CD唱片应用程序 2452 {; D- s9 J  P; A  o
7.5 小结 262
2 h4 U( U/ F7 Q) {7 \  \) ]# t  n6 t% l2 j
第8章 MySQL 2635 O" V5 K: `" Z5 W- f5 O5 V

0 R" P$ u  r7 K, |1 O; O% Z8 y8.1 安装 263
# j/ l$ W: J0 Q1 K8.1.1 MySQL软件包 264
: v' l, @- m$ L- d8.1.2 安装后的配置 266' f1 D! `5 \+ d
8.1.3 安装后的故障修复 270
! M- W6 \% a- d2 ~/ ]8.2 MySQL管理 270( r% ?8 u( [6 ~0 H
8.2.1 命令 270
( G* J: h) o0 E2 U1 s0 s) X- M8.2.2 创建用户并赋予权限 274
3 X% Q0 H# h8 |$ E8.2.3 密码 276
+ N2 a: e# J* y; |, r5 T1 v* a# f8.2.4 创建数据库 2762 I$ l/ G2 B, w2 \: _9 M
8.2.5 数据类型 277
1 A; u, c/ n. t( b" I4 l3 e8.2.6 创建表 278
5 t9 q: `2 @# O& U% K' {% G8.2.7 图形化工具 280
! J0 L9 N6 w7 r) |( b0 \8.3 使用C语言访问MySQL数据 283
& [/ b2 b: ~) F& E8.3.1 连接例程 283$ l5 V" t- O$ _' F
8.3.2 错误处理 287
0 K$ U& z9 i; h+ p" w( i7 r9 b8.3.3 执行SQL语句 288
4 L: T+ y: j5 Q5 e6 w* E  e1 Y8 _8.3.4 更多的函数 301
% [8 w$ S& B2 t" {; n# N8.4 CD数据库应用程序 301
2 D5 h) ~( D* g5 P8.4.1 创建表 302" u# N4 @, F8 e* X
8.4.2 添加数据 304
4 ^/ e( q% q$ C  C. j  C6 M8.4.3 使用C语言访问数据 306( q2 A( W# |7 a; R3 p
8.5 小结 316
6 w, q# H# V4 z% n/ P. G
: D/ a3 k# R2 G& ~+ V" G第9章 开发工具 317- @. X! G) S2 p% l4 P
$ H* |9 P8 N* S: x! C5 i3 O9 }* j
9.1 多个源文件带来的问题 317! }5 M" ~% P8 C3 S
9.2 make命令和makefile文件 318% p9 A  L3 l6 P8 J+ d5 g) e3 T
9.2.1 makefile的语法 318
$ H4 y# w) ?' m9.2.2 make命令的选项和参数 318% S! [9 \3 B* a: E
9.2.3 makefile文件中的注释 3214 j6 l( j6 H$ ?1 Y' |& t5 @" E
9.2.4 makefile文件中的宏 321' L4 U; P' a% P/ s  f$ c8 s& z
9.2.5 多个目标 323
2 d4 o( f- l0 x( n+ ?' q  S/ o; G9.2.6 内置规则 325
" w/ b' Y) w: \' [- A9.2.7 后缀和模式规则 326
! i9 k& D7 g9 V4 \6 f9.2.8 用make管理函数库 327
- h- H/ w% c, b8 B* Q4 P$ t9.2.9 高级主题:makefile文件和子目录 329. V) v* _" v0 L9 N# G; Z
9.2.10 GNU make和gcc 329+ \- Z1 ~& p; Q; J
9.3 源代码控制 330" A% ]+ v! C) u; T
9.3.1 RCS 331* W7 J( }  k4 _1 {2 t. m
9.3.2 SCCS 336
! r3 I8 ?0 I( H5 B9.3.3 RCS和SCCS的比较 3364 ~+ x, g9 J1 T% e4 o! ~" m) `6 o
9.3.4 CVS 337
0 Z* J$ [  j" d9.3.5 CVS的前端程序 3402 P& J5 \. ?2 |% s
9.3.6 Subversion 3412 e2 t$ Q' B, j  }! S; o( U6 R
9.4 编写手册页 3426 p5 t' c3 y* H
9.5 发行软件 345# S" ~3 A5 C; ^) ^8 `# D
9.5.1 patch程序 345
( l. C- q: H2 j$ u. X% e9.5.2 其他软件发行工具 347
- S+ V1 \- L0 t0 G% |" E9.6 RPM软件包 349
) @% f6 e( V8 N$ J8 n' y' X7 j9.6.1 使用RPM软件包文件 349- U5 d+ g/ `/ b6 M! b$ F
9.6.2 安装RPM软件包 350: C# W% L& j! }- H9 _4 P
9.6.3 创建RPM软件包 350
8 ~4 R7 N( y/ ~! f9.7 其他软件包格式 358  \2 ]! c4 Q+ v6 L7 S" k. D- Z
9.8 开发环境 358
7 |4 V" w# J3 A# }$ ?5 j; k9.8.1 KDevelop 358
* `" W# W6 B' c& z6 G4 d1 G0 a) }6 _9.8.2 其他开发环境 360& \. }/ T% [/ g" r0 W0 J% A3 l& i  a
9.9 小结 360
. [6 v2 C/ k/ R- c3 }  ~+ D% U6 h( ~2 H9 C: a8 e7 C
第10章 调试 361
: ?7 u2 U: e( B6 O+ v8 n1 v3 o+ c+ J6 |( G
10.1 错误类型 361) J; v. j4 W: ~6 c8 o7 J% l
10.2 常用调试技巧 362
7 M+ [, [* T  A( P" `10.2.1 有漏洞的程序 362
6 t( A8 y8 |: ^6 J) F0 _3 n( n10.2.2 代码检查 364
+ Z+ ]/ i% ~% [& C10.2.3 取样法 365' I  M: y& K5 E% G
10.2.4 程序的受控执行 367! `) o: C/ \3 A
10.3 使用gdb进行调试 368  Y# B( L1 }/ [# d
10.3.1 启动gdb 368' l9 a+ `5 s( B" p7 x$ R# y2 q, ~3 o0 J
10.3.2 运行一个程序 369& s! v. G% p8 u& C( b
10.3.3 栈跟踪 369
3 f  p) Q: S! U  k10.3.4 检查变量 3707 u: n" O6 Z: P: u8 F& l
10.3.5 列出程序源代码 370% u- \$ r1 d+ C: h
10.3.6 设置断点 371  d; u* [5 `; X: h. {
10.3.7 用调试器打补丁 374
3 O) a7 y5 w+ }; \10.3.8 深入学习gdb 3755 k* B) t1 p$ p  t7 G# K5 M
10.4 其他调试工具 375
5 H# `% S: {2 G/ x9 ]# T10.4.1 lint:清理程序中的“垃圾” 3763 R9 x* d/ B$ _6 R1 w3 U7 H
10.4.2 函数调用工具 378, v' C; E2 v9 u7 b1 y7 Q8 [
10.4.3 用prof/gprof产生执行存档 3803 s2 N4 @1 C" P
10.5 断言 3812 z8 A- O. S* X. b( X  d
10.6 内存调试 383
3 H1 L% I+ Z: _6 {' B3 a1 v- k& G10.6.1 ElectricFence函数库 383$ s! I$ x, R% B8 P% i4 i* I
10.6.2 valgrind 384
# u  P7 f/ M- r/ u( C  h10.7 小结 387& @. Q' b  |* S$ d% ?8 F  d
* p" G! I4 x. U6 U' L
第11章 进程和信号 388! H5 `$ s6 n* @, w
  ]0 S3 i; F; }* U0 {
11.1 什么是进程 3887 ?4 p- i& n# F3 i' z
11.2 进程的结构 388
+ [+ Y6 K; ]$ S$ _+ @11.2.1 进程表 390
. p& n1 ^+ P: Q# T$ s11.2.2 查看进程 390
6 e% ?4 a) u1 h11.2.3 系统进程 391
' _9 m3 |4 ^; Y# {11.2.4 进程调度 393
: p4 Y/ k7 N2 P) U/ A6 X4 Y11.3 启动新进程 394; I) j& N# _% P" k* z7 h
11.3.1 等待一个进程 3994 l6 D3 p6 F+ g- p- I
11.3.2 僵尸进程 401) A  x# h- l/ O. [
11.3.3 输入和输出重定向 403& Z2 m) ?# ?& [; p% Z0 ~0 B2 M
11.3.4 线程 404, F+ }& W, W+ q& j
11.4 信号 404
6 h6 S- |4 K- B2 R( V, c11.4.1 发送信号 408. _9 B, r; t& B- i6 l- d
11.4.2 信号集 412
/ f* }5 C; S' W8 j* |11.5 小结 4158 K9 F1 |+ X* m
5 |, o: D; a7 c7 Z2 M
第12章 POSIX线程 416
: S, I0 _1 _4 [% [, g% c
$ e& d7 w9 n' A' [0 B! Z12.1 什么是线程 4168 N, x: T) T% D  x9 K
12.2 线程的优点和缺点 417
/ \  t! f& T  l! [. ^5 \& F12.3 第一个线程程序 418
' y0 p  ^! t5 D. k; T' A" y. g12.4 同时执行 4213 y  Q( K7 R* ?: G' Q. b
12.5 同步 4230 i% H3 l0 w2 H& F: }2 w, X
12.5.1 用信号量进行同步 423
8 R" e: ~! E; Q4 L. o0 h12.5.2 用互斥量进行同步 427
# g) D! H& Y/ J% y12.6 线程的属性 431$ Z3 E+ o# K( w; F: l5 \6 N
12.7 取消一个线程 435( t0 [: \3 Z! Y* K" |7 G
12.8 多线程 438. B3 r0 @: F' a5 }  v$ P! ?  z
12.9 小结 442$ c4 W" j' M; F' Y" q

8 w2 r7 w( l5 t0 C: v, c第13章 进程间通信:管道 443
9 r0 o. c! z% S& p% f2 a2 I
$ J  M& B3 P# L6 I7 r13.1 什么是管道 443
. G( O# T6 i+ a9 w8 e3 i! R/ f+ y  M4 e13.2 进程管道 444
. N) Z% v$ w/ V5 |! Y  F13.3 将输出送往popen 4450 P7 {* w  {4 {& j) `, R
13.3.1 传递更多的数据 446
3 c2 Z6 X% W* H2 j13.3.2 如何实现popen 447
: p" j- ~5 f& S13.4 pipe调用 449% t4 H! a$ `: b7 D
13.5 父进程和子进程 451
7 l2 Y& X. Z$ r0 `2 Z, L13.5.1 管道关闭后的读操作 4538 T: w$ f" ]0 g  w' |
13.5.2 把管道用作标准输入和标准输出 454
& i; @. U% r7 _/ d13.6 命名管道:FIFO 456
- k8 f1 y9 Q( e13.6.1 访问FIFO文件 4588 F* _. E; H5 [; Z' R) P9 l# y
13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464
# \/ m: @- R& P/ b. b2 C3 s13.7 CD数据库应用程序 468
, @# [( a; P8 O% ~* i4 |13.7.1 目标 469  c7 `5 Z/ g' z, \5 n* S9 P  H
13.7.2 实现 469
, A9 @7 V5 y# ^8 S  x( b$ ~0 D13.7.3 客户接口函数 472
. Y4 Y3 V: c7 c8 K. n$ _13.7.4 服务器接口server.c 4789 l' a5 T7 R2 ?7 k9 u0 m" Z
13.7.5 管道 4816 \6 A8 T. [" k1 v/ }5 L
13.7.6 对CD数据库应用程序的总结 487
& q$ _5 w4 }, [! i8 P- P13.8 小结 487
; Y) A  f1 W) d( D$ ]6 g3 Z! o! [& n, d" J& D5 ^! {* b+ w! h. Y
第14章 信号量、共享内存和消息队列 488
1 j- m) H- {$ A& d0 m4 F3 k! G1 Y6 h* _+ W7 m
14.1 信号量 488
! {. t. h% P/ `! h- G& G14.1.1 信号量的定义 489
$ [3 c2 Q- q2 m" w: C3 j7 B14.1.2 一个理论性的例子 489
- X  J+ Y0 P& y/ V9 @2 s14.1.3 Linux的信号量机制 490* T! G0 {) R/ x
14.1.4 使用信号量 492' P& i; |" s. U/ {# U- e2 K( }+ H
14.2 共享内存 496- ?3 t: V% T" v8 N) g+ q
14.2.1 shmget函数 497
" F  G1 H2 I3 v! y7 e, u14.2.2 shmat函数 497. s- L& ~. G. A" `% z' }
14.2.3 shmdt 4989 M& {6 T& o; L8 i6 e6 ~& X  m- r- F
14.2.4 shmctl 498
& h$ \9 ]( S% T  [$ ^  u; I14.3 消息队列 502
- R  ?: A/ a$ g% S) s14.3.1 msgget函数 502% i; K. t/ v0 S: t6 }! W5 h
14.3.2 msgsnd函数 503
7 }2 S. P3 R3 ?  p  a14.3.3 msgrcv函数 5034 a- Z1 X: U9 i: ~# V
14.3.4 msgctl函数 504% H: F+ o/ v# E" t& h# X
14.4 CD数据库应用程序 5073 B: m! G. V2 j
14.4.1 修改服务器函数 507
, x/ M/ b- a3 M( x# w14.4.2 修改客户函数 509
$ h/ t9 v# R5 ?# h) a7 q14.5 IPC状态命令 511
# _5 W) f& p9 @14.5.1 显示信号量状态 511$ F: [/ x- I- i9 n: t8 ^. v4 u
14.5.2 显示共享内存状态 511
$ m6 s  z" X( s) @14.5.3 显示消息队列状态 511- H( f& r2 y- N1 q3 p$ W
14.6 小结 512! j1 j' A$ A9 L* Y2 X
, @4 j6 I2 r8 d" m  S! _, ^' S
第15章 套接字 513! B( G) f2 j* ?6 X4 O8 t
9 m& `' B  l2 I, W1 H& ^# \- i) X0 w
15.1 什么是套接字 513- E# s, K9 n  w! F  b, x
15.2 套接字连接 5137 P+ X) b: s7 r: V8 h* ~
15.2.1 套接字属性 517- t1 O' Q. N- y, D1 |
15.2.2 创建套接字 519
3 s: J/ ?$ T) }15.2.3 套接字地址 520
% D% ]: U  C6 I" K/ s- }+ c" S9 t15.2.4 命名套接字 520! y9 R  {3 e/ m% f
15.2.5 创建套接字队列 521% `, _3 u" C5 h- n# O
15.2.6 接受连接 521
2 b$ L! _1 J' ?+ ?/ L, ^$ K15.2.7 请求连接 522
6 h$ D( X. q) o15.2.8 关闭套接字 523
- W7 Y$ Q9 ]* m15.2.9 套接字通信 523& i) k& l$ I: D) D- y4 d" @
15.2.10 主机字节序和网络字节序 525/ }$ W, @* _) P* |1 v
15.3 网络信息 527" A; O5 G3 Y6 Q% C5 d$ b9 J7 k
15.3.1 因特网守护进程(xinetd/inetd) 531% w4 l5 N" a/ `+ a. m7 ^* S5 s- \
15.3.2 套接字选项 5338 c; z: ?$ j+ U4 |9 L( c( y5 d* L& U
15.4 多客户 534
- a, |- _. o! W2 E15.4.1 select系统调用 537
+ D% k5 z" o1 v% ~! C) L4 p0 L15.4.2 多客户 5408 o% X1 \+ R0 \) `  b
15.5 数据报 543- [  D( N6 Q. j
15.6 小结 5454 `( c9 \5 s) I; p8 n5 u- u

) U" @' p0 t: T2 F8 v第16章 用GTK+进行GNOME编程 5462 |6 P, }3 l3 k
+ ?: N% w$ J/ J+ c* c
16.1 X视窗系统简介 5467 H. K: g% {, Q
16.1.1 X服务器 5479 P5 _' [2 Q) q) n8 X5 W3 n
16.1.2 X客户端 547
7 L9 Q6 P/ F0 @! @. C* Y: w6 A" r16.1.3 X协议 547
# H! p( u. [7 `8 E16.1.4 Xlib库 547
* M9 W1 Z# c/ n$ i) l6 ^" n16.1.5 X工具包 547, K% ^+ W- w3 L
16.1.6 窗口管理器 548
; k# p; W- P5 K, Y3 Z# |. a16.1.7 创建GUI的其他方法——平台无关的窗囗API 548
% l4 p$ M2 Y" |  v' M16.2 GTK+简介 549
" o* d8 E' p1 F: m7 u/ x& P16.2.1 GLib类型系统 549" b1 _) p# Q& Z& M; z( k
16.2.2 GTK+对象系统 550
( f& f9 S$ p( b% `16.2.3 GNOME简介 550$ D+ j0 n6 _% |6 T% l
16.2.4 安装GNOME/GTK+开发库 551
& D# i- y' j6 V& L8 w16.3 事件、信号和回调函数 554
2 o# E6 ?+ f. Z& Y1 [; L16.4 组装盒构件 556
- M( q% l# M. k; w2 ?16.5 GTK+构件 559* v( |! K5 n* K' _5 O  b* h- T- b
16.5.1 GtkWindow 5593 N7 i0 U  @) D" L; Z
16.5.2 GtkEntry 560
" H' O0 J( y6 Z9 X' n% C% ^# \16.5.3 GtkSpinButton 563
0 |  K2 A- Q2 X4 Y* ^7 b2 c0 V16.5.4 GtkButton 5652 Z. n) S1 D, ?: b$ b6 L6 k& X' u
16.5.5 GtkTreeView 568
5 \. r, Y. X$ ?5 U16.6 GNOME构件 571# g- l1 b$ ~2 z# C5 b& E
16.7 GNOME菜单 572, C& P5 H% F( x, B# f( u
16.8 对话框 5760 g) ]) I$ s2 A4 [! G# u2 d7 ]* o: n
16.8.1 GtkDialog 577
6 A; N. H6 u) S- l" q16.8.2 模式对话框 578% r8 g% S0 d% R: h% o* ~$ S
16.8.3 非模式对话框 5798 H1 ^3 P* V' F* u" K
16.8.4 GtkMessageDialog 580
9 [: j, g* F; r$ C1 y: P16.9 CD数据库应用程序 581
6 ?" i* j' y- s" P16.10 小结 592
9 U1 w4 m5 Y) C* r6 h5 G9 V% E0 s" [- j) z2 X2 T# P! B/ r
第17章 用Qt进行KDE编程 593
- H% o3 \1 ?+ H# S' L+ e: p
* [# R/ U2 M5 ]3 j" k6 o8 m17.1 KDE和Qt简介 593; _6 Q1 F6 X+ m( j
17.2 安装Qt 594
% F; K  {- A) [, s- f, Q& o17.3 信号和槽 596
6 O. @8 N& Z5 _17.4 Qt构件 602
& h7 S8 I! H& O* Q# h17.4.1 QLineEdit 602' K) Y9 K* a/ S5 i; d! e) R6 z. x
17.4.2 Qt按钮 605
( h( g$ s1 p6 d( @0 K% `/ x: _; |17.4.3 QComboBox 6091 U; x0 u# I9 g/ e: `. s. f( C8 ]
17.4.4 QListView 6134 g$ x6 E! `0 ?) n& v
17.5 对话框 6156 A, b* M4 a' _; x
17.5.1 QDialog 6150 g3 }5 v2 m7 u7 j! K
17.5.2 QMessageBox 617
5 I7 f# |; P6 x$ a; C2 \17.5.3 QInputDialog 618" F  p' P+ R0 A: B+ e
17.5.4 使用qmake简化makefile文件的编写 620, x  i$ T4 k2 r
17.6 KDE的菜单和工具栏 6204 D+ N9 s( p* X) Z  O
17.7 使用KDE/Qt编写CD数据库应用程序 624* [( X2 t  I6 S% |  Z! r2 J
17.7.1 主窗口 624
  t2 D7 q. j. t4 v" T17.7.2 AddCdDialog 627
% g1 }' W: Y  z, e9 |( G17.7.3 LogonDialog 629
$ j% O* Y6 ~5 @5 c7 W0 X/ ^17.7.4 main.cpp 630! U$ L/ [# D  ?& x/ {
17.8 小结 632
( O! @: v) T6 O6 P( c5 w0 s
! e' Z9 b$ [# ~4 M* Y! j4 o第18章 Linux标准 6333 L- i, F+ k4 F8 i) W0 |; X

! a8 e5 N; K5 F# I- x18.1 C编程语言 634
# w# h: [) _. f* Y0 G' u) R0 w18.1.1 发展历史简介 634: W/ I, Q" o$ @/ X3 N* ]
18.1.2 GNU编译器集 634/ S3 p3 ^! p0 {& v9 V: d
18.1.3 gcc选项 6356 ]- V) J  S* Q8 x
18.2 接口和LSB 636
' |4 b& ?  e. ]& [% C( r: i- g9 L1 q18.2.1 LSB标准函数库 637
  @# a) `4 a' i; B* }$ j+ }2 g18.2.2 LSB用户和组 638  a+ i% G! ~, _
18.2.3 LSB系统初始化 638+ N: g$ S3 o% |# d+ ~0 i
18.3 文件系统层次结构标准 6398 H0 a. s  U+ _. A$ g. b
18.4 更多标准 642
- j" [  F, s$ R8 _* s/ I, l18.5 小结 642! A5 |* a- V0 O' y8 Z+ g2 Y
- S% ]% D# h8 l2 R$ o$ k( _

, }& k  r4 |% G/ ~0 s/ ?# y

评分

参与人数 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 | 显示全部楼层
看起来是不错啊
7 G  r7 C. ]; f! H; u& O
想知道小甲鱼最近在做啥?请访问 -> 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, 2024-3-28 18:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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