鱼C论坛

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

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

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

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

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

x
TB1SlhmMpXXXXX7XVXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg
' v/ k  q& M1 n
% v2 K* I# L- g. [" o% G& d  k
书名:《Linux程序设计》
% i: R6 u. e0 @! |2 U9 i6 x' r! ^作者:马修 (Neil Matthew),斯通斯 (Richard Stones)
* y/ D% `( S3 H" ~译者:陈健,宋健建
, t1 l; C0 ~3 u. B/ c出版社:人民邮电出版社
! U3 v( z1 V! T  A/ Z% x出版年:2010年6月1日(第4版)
. s# `+ _' m* n/ Y定价:99.00元: V6 Z! O- ?7 t
装帧:平装
  p! w- G( J$ j* r7 H. AISBN:9787115228215
! f0 D! n& }: t2 U
; o- i$ q2 j. B& C购买链接:
" e7 K; n( W1 J. u  H
9 h( R9 ~+ S- A5 k% G" v& n  h/ j

2 D$ e# q" g9 l! h7 J1 X2 ~亚马逊(Kindle)-> 传送门
" {5 g: v$ m) r5 R; P
1 g7 j$ J. ~1 u& P; X+ w: {' v亚马逊 -> 传送门; _- b8 b- X+ V1 H) q8 m/ T$ [' y
0 V& H+ e2 a: _- x8 z
当当网 -> 传送门
7 ?6 a/ J- J  G' _
8 t& P2 p) w2 {3 h; u6 V京东 -> 传送门
, _* B6 P8 {' Z6 o6 W+ w
4 e) y( j0 P5 x" a- z8 _# C天猫 -> 传送门6 s8 i( E  u; Y/ D: h

+ S- @- y. G6 |
' z; V# u+ Y6 q- z7 U2 L& m内容简介:
( i. d; d7 R" s/ I- N" t1 o- \8 e5 D

0 a: E# x3 U; x: E4 B6 @
《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。/ b1 I: p# l, U7 P* o5 _9 F' q
+ _8 V# m% A( i* S" L' u/ z. L/ E
《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。" b" p7 Y) D) s( n: n% }

4 r3 b- Y2 a* i9 \- {# ?0 o, o
6 r3 M9 O) s/ P7 @1 R目录:
" `6 z9 q0 C. D$ L0 Q0 Z9 R$ _- G% x2 J) B


- P# O3 b7 X7 y第1章 入门 1
7 G3 U. S. M* m, }9 x2 j2 h
1 v8 b8 ^# r) H+ W8 w# K1.1 UNIX、Linux和GNU简介 1
0 ]3 |4 C, @, k, O5 d1.1.1 什么是UNIX 1/ Q$ Q2 R# `4 q- `) z& q. B
1.1.2 什么是Linux 2
7 D2 Z7 U# \: t, x: U6 o: f1.1.3 GNU项目和自由软件基金会 38 D! B5 V" V" F/ ]5 D/ v. B: Z
1.1.4 Linux发行版 3
$ B' z' r( V: t6 @1.2 Linux程序设计 4/ d1 y( S, q$ F, u; T
1.2.1 Linux程序 4. U2 z* Z% W) t( a( s: y
1.2.2 文本编辑器 5
5 I) B- ^$ o5 k5 G1.2.3 C语言编译器 5
- N4 g& c3 ?7 [2 |1.2.4 开发系统导引 74 _) i% o+ g6 H0 E/ c$ H7 ]
1.3 获得帮助 121 L+ B4 A3 Q6 \
1.4 小结 14
6 m+ ?( |- `5 R7 M8 f9 B 1 y, p' u! a. p
第2章 shell程序设计 152 J7 I- _: d: o; _5 i

: Y, n* Q0 k7 m+ l; B2.1 为什么使用shell编程 15
! k! w3 ?7 M, W% V7 W# Z$ t1 Y8 f4 _2.2 一点哲学 16
% ~1 A' ~6 U* h" T" T1 j* ~2.3 什么是shell 165 c7 ?  W* `# ]# l2 f
2.4 管道和重定向 18' o* |6 e! O$ @" ~: D
2.4.1 重定向输出 187 f$ ]0 J' o: k( B
2.4.2 重定向输入 19
4 r- L6 g% H! M2.4.3 管道 19
  a% v. R5 k% v# H3 I2 a2.5 作为程序设计语言的shell 202 ~; w' V6 h: I0 T. |/ u4 h
2.5.1 交互式程序 20( e1 F; N2 C" g  ~
2.5.2 创建脚本 21& f! n$ r5 K, a5 @' n' j. [+ V5 |6 [
2.5.3 把脚本设置为可执行 22$ v! ]& i# G/ b+ Q, Z5 e
2.6 shell的语法 23. n' r+ K! _% e2 @2 v' ]+ E
2.6.1 变量 23
( A. n! i5 h2 h/ \6 O* a2.6.2 条件 27
1 K: w- a3 x( i  Z: }  w% f7 Y2.6.3 控制结构 29. g5 B1 V' |4 W. g8 H
2.6.4 函数 39
5 J- H; Z/ T3 i* p6 W% `* H2.6.5 命令 42
8 X. V3 ^3 \& ?- K2.6.6 命令的执行 58& k; I. n$ {9 m+ W+ U" c+ B7 a/ f
2.6.7 here文档 61% }$ m" ~! x' y' j/ n" E) s; ]" B
2.6.8 调试脚本程序 63
2 _9 [1 x$ \* ~4 L& d2.7 迈向图形化:dialog工具 63! A* e3 X, ^* V) k% X  a7 u9 A
2.8 综合应用 68
2 N& M7 X9 I9 S$ z# t2.8.1 需求 68. q3 x" ]0 |7 {+ ^( Q4 u
2.8.2 设计 68( B% J0 W/ X7 r8 ^
2.8.3 应用程序的说明 76
5 U3 p5 H8 `  n& D) |* }2.9 小结 77
. B. m6 }5 _6 w5 }8 ?. ^ 8 c5 Y$ t, V9 P- a5 l" V- O
第3章 文件操作 78
" ], o% i( W9 x  [
) a1 a  U+ K' \- s3.1 Linux文件结构 781 t* R" k; t$ S* L& F. H% J
3.1.1 目录 79
. _' J6 i0 j) w3 |( f3.1.2 文件和设备 79
) j4 d2 l& R- o6 b/ P3.2 系统调用和设备驱动程序 809 u; H* Z( S1 }* J* m  K3 M9 j
3.3 库函数 81
: m* F$ K# `' e8 r6 m3 R) E( }  C4 @3.4 底层文件访问 82+ i$ F9 f) D# f8 N+ q( G
3.4.1 write系统调用 82
, ~( @* ]3 K. t" i  K& ?3.4.2 read系统调用 83
- y+ H9 C8 k' ]3.4.3 open系统调用 847 t- y; g& R" h( h9 r" U
3.4.4 访问权限的初始值 85' _8 p: K" P5 F. ^4 N- E' }( I
3.4.5 其他与文件管理有关的系统调用 884 [: C' ]7 q) x& V4 M" X1 A
3.5 标准I/O库 91' v1 h% }* y6 m- C
3.5.1 fopen函数 91
% A- P/ ]8 e8 q2 [) j3.5.2 fread函数 92
  a1 \# f* u% p- |4 }" a: f* B3.5.3 fwrite函数 92
# B1 U0 A1 `7 h' n3 {( m3.5.4 fclose函数 92
) L2 B: B7 q; R: a3.5.5 fflush函数 93
8 K5 X+ I3 }# S3.5.6 fseek函数 938 M4 a" u8 }8 y. K% `
3.5.7 fgetc、getc和getchar函数 93
# {7 i7 B$ P2 J* y3.5.8 fputc、putc和putchar函数 94% e! F) {& `' u
3.5.9 fgets和gets函数 94
' a% `1 g/ ?3 b! a2 X1 q8 ^  P5 o( i3.6 格式化输入和输出 94: ^$ ~( ~6 u; K* D8 K0 C
3.6.1 printf、fprintf和sprintf函数 94
  {$ u1 F$ d/ k6 f, a) z9 r3.6.2 scanf、fscanf和sscanf函数 96
: L$ Z  _& E9 A/ p3.6.3 其他流函数 987 k$ c" L4 Z6 V' E+ S2 z& c0 c
3.6.4 文件流错误 99
) N% a  ?9 L, `5 v& y# g3.6.5 文件流和文件描述符 99
9 Y. O. g' W& X7 O+ Q3 Q6 Q3.7 文件和目录的维护 100
1 w# H9 O. _" J5 {0 r1 Q* x) z" R3.7.1 chmod系统调用 1002 N- a+ X" w" w3 Y
3.7.2 chown系统调用 100
- \  w- g8 K5 r4 u3.7.3 unlink、link和symlink系统调用 100$ c  g5 b0 F9 y/ s0 \# n. K0 R( m
3.7.4 mkdir和rmdir系统调用 101
2 \( }# p2 M$ h) c6 D* a- A2 r* k3.7.5 chdir系统调用和getcwd函数 101
3 D# q8 D$ d' X% a/ F- z4 l7 y1 \3.8 扫描目录 102
& A; p# Z2 g: b! o4 q3.8.1 opendir函数 102
+ R% f& @( }6 {! Y' p8 U3.8.2 readdir函数 1024 h6 ?0 {; s- Q. X
3.8.3 telldir函数 1030 K- F) j$ n) i% O3 q: e& O; x$ [7 v
3.8.4 seekdir函数 103  K4 W  p+ a5 H# D2 N" s7 O
3.8.5 closedir函数 103
+ R+ H$ G7 n7 Z, d" s3.9 错误处理 106; g1 H! |5 x, q. q% E6 g, x5 @
3.9.1 strerror函数 1069 i, {* x0 Z2 U: U1 M  w
3.9.2 perror函数 106& o/ g: i/ J1 |0 n+ \* ~9 m
3.10 /proc文件系统 107/ Y& p5 Q2 w% j1 W& T, Y
3.11 高级主题:fcntl和mmap 110
1 {1 j0 g2 R, G) h  D+ I3.11.1 fcntl系统调用 110$ d- F' x% ]& U. L/ `) G$ K
3.11.2 mmap函数 111
3 P$ V8 k# J* d" ~7 z' f3.12 小结 113
) `* u- v4 g8 B- w! r6 \
1 n0 L& O- z. T) Z第4章 Linux环境 114  W0 G2 Y: n: a( |1 ^

5 E/ o6 \3 f! O/ ]  Q* ?+ w, [4.1 程序参数 114
/ l$ _9 m- U$ x3 _+ x4.1.1 getopt 116
: p1 D# q* d4 s' X( A4.1.2 getopt_long 1186 O0 E! G, L( Q- v
4.2 环境变量 120
% Q* ?! T4 x. l9 r  _5 s4.2.1 环境变量的用途 122
& Z, C3 a, z1 Z9 C% A8 B4.2.2 environ变量 122' E# Z  R/ v' G/ x8 L& J
4.3 时间和日期 123
4 A3 L6 }% ]: Q8 m# r& G& f0 N4.4 临时文件 129
6 S& d5 V: U' q) i4.5 用户信息 131
# I3 q& ?: p( G! v4.6 主机信息 134
% x6 A" {+ t! q( \4.7 日志 1356 y+ D0 U9 f3 d- n) M9 p
4.8 资源和限制 139+ I; X! [# m9 u, y
4.9 小结 1431 _/ D+ p5 F; o2 P- Y
* ?- f# D7 A' k/ {* f' ~% d4 @
第5章 终端 144
; V) p! @+ j* u+ x& E2 e2 ?6 ^3 O- B' l( ^; y
5.1 对终端进行读写 144
4 S. h7 n/ Y+ ~* q, {3 ^5.2 与终端进行对话 149; K2 ]% m' w0 O) w9 q+ q
5.3 终端驱动程序和通用终端接口 151
# k. L: h9 o# r, b5.3.1 概述 151! J- J( o. J' w
5.3.2 硬件模型 151" A: q- ?0 ]6 H0 O# N$ G' ?
5.4 termios结构 152! A$ `: g+ H! V+ z
5.4.1 输入模式 153
- `% k) y& g( b' B* I5.4.2 输出模式 1542 H8 V* j: Z( F" M7 ]) @9 r# s
5.4.3 控制模式 1550 g1 M4 M1 q1 k% I
5.4.4 本地模式 1558 y/ z5 b0 L3 s% H) T
5.4.5 特殊控制字符 155: i3 ?% V4 `) g( [
5.4.6 终端速度 158
2 s8 P, z/ B# [" w% S5.4.7 其他函数 159
& q: l9 `: @& l$ v5.5 终端的输出 162
3 Y3 {4 B* K4 |& L5.5.1 终端的类型 163+ m" x0 G+ a6 E, V4 Q9 h
5.5.2 识别终端类型 163% Z$ V# ]5 e6 N+ O5 w) e( e+ g  m
5.5.3 使用terminfo功能标志 1652 r, o( r! \8 N9 D5 a& P
5.6 检测击键动作 170! H6 t$ g3 \- i- T
5.7 虚拟控制台 1729 A' G5 P+ e+ a1 V
5.8 伪终端 173
3 V* g* F9 x1 d- \. C% P6 M& X1 K- N5.9 小结 174
1 ?" p- w7 u" ?- f , x1 V, Q. K3 a& c! T/ F
第6章 使用curses函数库管理基于文本的屏幕 175
% @8 r! b% K! n( k# |* @$ d! O) P! a* X
6.1 用curses函数库进行编译 175
, ?+ K1 s9 T  ~6.2 curses术语和概念 176% p8 m0 s' V3 e4 ~0 }
6.3 屏幕 178
. ]: t$ Y& a5 s, o6.3.1 输出到屏幕 179; A! h8 Y! F1 y& t9 k6 ~- E9 R
6.3.2 从屏幕读取 180
" d- Y& V+ O6 y8 \6 J6.3.3 清除屏幕 180
) H3 f; ^& G- f/ E, L5 J5 D$ V6.3.4 移动光标 180
7 E; o; S% Y2 F  c& W: t7 o6.3.5 字符属性 181
: F) ]( Y! d  I6 I, m+ q% _6.4 键盘 183
5 S% G: w! V; V' e8 O$ ?8 q! }5 ^6.4.1 键盘模式 183
- S0 [8 l- ^: g8 w$ F% C6.4.2 键盘输入 184$ Y5 z4 b9 y4 @! b
6.5 窗口 185
% H/ Y6 j) x6 H( L2 n& j6.5.1 WINDOW结构 185
4 W% j) h* p* d6.5.2 通用函数 186$ K3 t. J8 Y0 _2 C# {8 {4 J. e  \; ~
6.5.3 移动和更新窗口 187" B& Y# E9 S7 Z$ J
6.5.4 优化屏幕刷新 190' f# a$ S( [. J2 J; g$ ]
6.6 子窗口 191
+ Q* _: E0 B$ Z- i; w0 K( k6.7 keypad模式 193
$ r' v) i1 ^0 A$ X2 m9 @7 g- C6.8 彩色显示 195
0 F: D5 x& V. F# e. O5 l' u4 T7 U6.9 pad 1980 Z9 O7 y1 b6 A, b. E! H
6.10 CD唱片应用程序 200
7 z1 i6 b8 @+ d- H8 a( M6.10.1 新CD唱片应用程序的开始部分 200; p3 C6 ~6 g8 z) c7 T- M
6.10.2 main函数 202
, X4 i7 q, ], R; ?2 P( I* I6.10.3 建立菜单 203( t7 b& o& U' Q. _2 G( s8 I
6.10.4 操作数据库文件 204
% o+ e) M/ T1 c& J+ t2 R6.10.5 查询CD数据库 209
% |! `% ?5 L1 q& M7 h6.11 小结 2136 t5 l3 l( m: E. ^" n
. N7 g/ f1 R1 e
第7章 数据管理 214
( }, O2 o8 [, r1 d: r& A
9 |5 ?5 x! k- T( R/ ?2 L7.1 内存管理 2146 B: b/ S+ N  B8 V! Z
7.1.1 简单的内存分配 214
) W6 ]" D& z  ~2 p! n  o/ Y7.1.2 分配大量的内存 215
) r7 j  `2 L8 U' C4 n3 L; H7.1.3 滥用内存 218
; r, Y+ N; m' y- W7 K: T7.1.4 空指针 2196 W7 f& W% h0 z- m3 x) w, o
7.1.5 释放内存 2201 z! o; ~; E: N" ~5 z8 g
7.1.6 其他内存分配函数 221( r2 D7 d0 l5 ]+ p3 [
7.2 文件锁定 222: ?! T! H) {7 f
7.2.1 创建锁文件 2220 O  R! i5 f9 _6 @  e
7.2.2 区域锁定 225; @. U. x4 y7 p; E( C2 _" z
7.2.3 锁定状态下的读写操作 227
2 k9 D  Z: N7 T7.2.4 文件锁的竞争 2327 j& _' _" e5 |  x, ?
7.2.5 其他锁命令 236* l6 m& \/ x7 Q" v% D' w- F
7.2.6 死锁 2364 r8 P& T$ s! Z- u0 B/ D& n
7.3 数据库 2377 U( c( J" k! O4 w( |  ^& ^
7.3.1 dbm数据库 237, V' j1 u& Y8 E5 p0 r: l) I
7.3.2 dbm例程 238: j  F* t0 h8 u8 r- G
7.3.3 dbm访问函数 2398 @# s! |7 O2 g
7.3.4 其他dbm函数 242
2 |5 }2 V# m, D) z+ t' m7.4 CD唱片应用程序 244
5 ?* f! Q. j& M. Q8 S7.4.1 更新设计 244  y1 e$ S, j# s; a3 ~
7.4.2 使用dbm数据库的CD唱片应用程序 245$ N( D( B: ~) `  y' ]. K
7.5 小结 2621 A6 b8 i- }  ]6 p# N2 [) t. d

" p2 Z- K, H8 I4 }第8章 MySQL 263
1 W: [7 Q. D/ e- Q$ u! q' n4 |# ?
% Z4 f: Y- h/ v8.1 安装 263' v0 K0 z0 n! W" V- L. N' n
8.1.1 MySQL软件包 264
& i0 [$ `- c. y$ h, X# N1 f2 z( |8.1.2 安装后的配置 266
9 @/ }" Z- b. e1 W  g8.1.3 安装后的故障修复 2702 F: e. `5 V* u' d7 c6 y! s
8.2 MySQL管理 270
2 N  u2 U4 [; |3 h8 j8.2.1 命令 270
/ b+ _0 j5 w2 e: t( f8.2.2 创建用户并赋予权限 274
3 h1 B! l. f& W8 }+ z# Y% }8.2.3 密码 276
7 D& q  ~' {6 w/ {/ c$ L+ f  `) F8.2.4 创建数据库 276+ ~/ J% A4 t6 N# }
8.2.5 数据类型 277
: x9 l' O! g# K; S& g8 |8.2.6 创建表 278  Y: ?5 j  X3 B! X
8.2.7 图形化工具 280
3 V  I' u1 O; U2 {+ F& ~8.3 使用C语言访问MySQL数据 283
. Q; x$ [- s% x  w8.3.1 连接例程 283) N5 Q9 O" P# t& ^9 N
8.3.2 错误处理 2878 t2 w  X' B% {: l, }/ Y/ X
8.3.3 执行SQL语句 2887 ?- e: |7 H$ @
8.3.4 更多的函数 301
; q) n9 K9 `! ^! x) g2 k3 s, l7 j8.4 CD数据库应用程序 301
7 ]  E" ~4 p5 ?- ^9 b% }# o) s8.4.1 创建表 302& R  i* ?6 m2 }3 H6 j
8.4.2 添加数据 304: G9 u8 T2 Z2 o9 q0 \; l  L$ T9 \
8.4.3 使用C语言访问数据 306
+ i8 @# ]9 M2 p" b8.5 小结 316
) E2 W  }  b8 B' C) \  o+ S2 c" t: A# O0 N3 K3 X4 Q# o. Z+ j
第9章 开发工具 317+ [; A; ?6 o7 C1 U2 T2 L  T% m

9 ?" Q9 T4 m& Q/ \: I9.1 多个源文件带来的问题 317
- \4 H' R: E2 U4 E8 T- r0 ~9.2 make命令和makefile文件 318$ V8 j$ [; b6 y
9.2.1 makefile的语法 318! h, f- g) ]4 J* ~: J4 E
9.2.2 make命令的选项和参数 3181 P, D) R3 t" p/ q& e! a, b
9.2.3 makefile文件中的注释 321- J& P) y# w& N* a0 m8 ?9 u
9.2.4 makefile文件中的宏 321  f. x+ [' M2 r* n+ u
9.2.5 多个目标 323: I; Q  g" X$ D8 G
9.2.6 内置规则 325
5 v8 O/ m" x, U0 R; q. |2 C2 E3 f9.2.7 后缀和模式规则 326
1 X* ~1 l' u& Q1 u4 i, a' C9.2.8 用make管理函数库 327# w; a( }. L7 C$ c
9.2.9 高级主题:makefile文件和子目录 3292 n' E4 @' K" V7 k
9.2.10 GNU make和gcc 329
# H4 Q, a: f. o# t5 r9.3 源代码控制 330. H0 P, F9 j& p( [
9.3.1 RCS 331
; Y7 h. J; `1 B6 }& ~/ ^9.3.2 SCCS 3368 z1 T* C8 z7 b: G6 o( G
9.3.3 RCS和SCCS的比较 336
: L: I% a5 f# e9.3.4 CVS 337
6 n( p" w) j+ C7 e: `9.3.5 CVS的前端程序 340, ?# `3 ?' }. s5 }8 O: J
9.3.6 Subversion 341( s9 p* i8 o* V( h/ ^) s2 K
9.4 编写手册页 342+ V4 Z3 r' a) k! k
9.5 发行软件 345
3 j/ n9 @' C% G9.5.1 patch程序 345/ v$ k( E3 L% t( O
9.5.2 其他软件发行工具 347: l; Y. ]3 l' o) p
9.6 RPM软件包 349
+ n. u$ R9 ]7 a! L4 q9.6.1 使用RPM软件包文件 349* e& X( O" ]9 R" H1 H  h; ^% Q+ {
9.6.2 安装RPM软件包 350
$ M& J$ L' r8 d! T9.6.3 创建RPM软件包 350
4 M4 t% x6 u6 b  S3 F9.7 其他软件包格式 358
9 X( E6 `# S* e& p% I9.8 开发环境 358
' ]' A% n- _+ Y* f' y% m4 G5 a9.8.1 KDevelop 358
! Q/ j: K) `1 f- a+ e- r; t9.8.2 其他开发环境 3608 q& U! P2 D8 K
9.9 小结 360% D; ]& j, }1 p. ?! _: I
) r1 D1 C& Z# Z( c9 A( D+ {
第10章 调试 361
+ Y; g9 [3 N# c& z7 v, Z7 Z
+ D$ i( y5 u. y$ P& Q10.1 错误类型 361
  B$ L# l' L5 u8 [3 Q8 W, v10.2 常用调试技巧 362# l: [* B+ g; r5 ^3 K% L2 F
10.2.1 有漏洞的程序 362% n7 j: M9 K( r" n4 ]# @
10.2.2 代码检查 364
8 l& t7 ]. _$ ]9 }# V: j, p10.2.3 取样法 365
2 _+ V- S$ u% ^3 n10.2.4 程序的受控执行 367
  b9 G# J5 j/ m1 {10.3 使用gdb进行调试 368
2 k  f, ~6 z1 [" P2 U10.3.1 启动gdb 368  h2 Z) C) x5 a  C. Z
10.3.2 运行一个程序 3697 ]2 [+ h/ _' u" B) T
10.3.3 栈跟踪 369
5 i4 b( |1 m1 T; X$ N10.3.4 检查变量 370% W, u7 A6 O: G- n4 C
10.3.5 列出程序源代码 370" _) L8 Q# a7 }6 \/ d
10.3.6 设置断点 371
: h2 j( A& w; w( d10.3.7 用调试器打补丁 374
( F1 v$ r0 N4 ?& I6 v' l# Y10.3.8 深入学习gdb 3758 ]* D$ Z5 j) W3 E& Y6 M
10.4 其他调试工具 375
) [$ }0 |: p# W" X- [10.4.1 lint:清理程序中的“垃圾” 376
6 \" O, G  l4 H: X: P10.4.2 函数调用工具 378
5 w: L% y$ V( _0 P" v10.4.3 用prof/gprof产生执行存档 380
; ^* Z! b  P+ T! q- j10.5 断言 381. a' |" t, z: O4 W
10.6 内存调试 3834 f# A) @( t3 G9 W5 D3 N
10.6.1 ElectricFence函数库 383
+ u" S- a0 E. Q6 y! s# d1 n10.6.2 valgrind 384
# O$ r4 J3 Z) ?10.7 小结 387
& s& W" B9 k, {& }! N( v9 g) ^7 q/ b3 e( A5 K3 ^
第11章 进程和信号 388
1 c) p3 G3 @  G4 v. l3 g
1 f6 A$ ]& y$ P5 L2 q8 c11.1 什么是进程 388
: j& }* R. A, G! `8 t2 c11.2 进程的结构 388
; {+ `1 B2 l) b. D11.2.1 进程表 390) v% }& D; i, z* O: {4 k
11.2.2 查看进程 390/ L/ r! g9 ?5 p& w' _% x
11.2.3 系统进程 391: q+ V' A" B3 V3 x" y) |
11.2.4 进程调度 393
+ C/ D8 W/ [+ Z11.3 启动新进程 394
$ x* t0 j5 W3 P+ U/ j4 D11.3.1 等待一个进程 3993 S) b, X9 T/ X/ R1 ^& G
11.3.2 僵尸进程 401( B( W( n% I9 K8 T! c& Q
11.3.3 输入和输出重定向 403
8 p% D, ]& {4 v  z$ U2 p, U11.3.4 线程 4046 x8 X' ~) k) C! ^" d/ Z& R
11.4 信号 404
: ^# F( J1 Y& n% |11.4.1 发送信号 4082 A3 L' D& J8 c; c( }+ I4 v
11.4.2 信号集 412) V: Q. [9 O  J
11.5 小结 415& K  F* s4 x( X3 i' [4 f9 J

8 L) |8 C6 J7 u" k) ?8 i9 Y! g第12章 POSIX线程 416
* t; d$ S5 I/ i
: |' q, T3 I- u4 A3 b12.1 什么是线程 416
8 d7 }7 H5 Z1 X12.2 线程的优点和缺点 417  i2 R! F: h# F+ G+ K
12.3 第一个线程程序 418
4 ~. k; s9 O0 w7 W12.4 同时执行 421/ R# w" k! O3 T" \. x$ R
12.5 同步 423
+ Y& T. j8 B9 y- v12.5.1 用信号量进行同步 423( k$ S& K- F5 M8 Q
12.5.2 用互斥量进行同步 427# v9 b+ U+ l: @, q/ \! o1 a5 Z) C
12.6 线程的属性 431& I  T) B& ]) A7 r1 M. t6 V
12.7 取消一个线程 435
3 C: x0 O: E; c5 V0 Q1 z& H) m12.8 多线程 438
# B7 I- O1 C) E- L2 G( s" c/ O6 {12.9 小结 442
3 ^- y5 J2 O3 @' z% P5 T. k: |. @6 ?$ c$ B# ]  ?( {
第13章 进程间通信:管道 443
' P* N* ^& ^' y; ?2 {& t9 L! J9 W$ j& g8 }" i3 K3 q+ ^
13.1 什么是管道 443' P  @2 K7 O: _& G
13.2 进程管道 444" [; n) F; z5 L* Z. B1 F, L  A5 O3 \% a
13.3 将输出送往popen 445
) E3 F" O- `9 @% l. ]13.3.1 传递更多的数据 4465 z/ _+ F  _- [, |7 G
13.3.2 如何实现popen 4477 p) f0 o, ]' t+ B  [' n# T3 G2 I7 e
13.4 pipe调用 4499 x; y& t: e' ?7 V! k
13.5 父进程和子进程 451, X0 G5 U& t& B
13.5.1 管道关闭后的读操作 453
+ q# i$ t' g# Y13.5.2 把管道用作标准输入和标准输出 454
" P2 \0 `) E: S/ w13.6 命名管道:FIFO 456
! e; ?! W6 J+ J; n7 o% F13.6.1 访问FIFO文件 458
) `# z$ i+ q% G! c9 `! ?% S13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464
7 c7 |* I2 H6 g5 X8 k. e9 m& M5 s, {13.7 CD数据库应用程序 4681 W5 }8 a$ |2 l& |2 [
13.7.1 目标 469
  r9 O6 v  n5 I+ u* o  i13.7.2 实现 469
! _& D; i  L1 v6 C13.7.3 客户接口函数 472
+ j$ m7 q5 o. `7 D2 t: `13.7.4 服务器接口server.c 478+ @# U/ K1 k0 V4 t- J. @+ L
13.7.5 管道 4817 c& o8 W; j- s) p. i
13.7.6 对CD数据库应用程序的总结 487
" W" X  o) e+ T# r# y; X13.8 小结 487! c+ V8 F' m% l5 j7 d; a
9 W, C2 G2 q9 T' t; i6 h- h
第14章 信号量、共享内存和消息队列 4885 M- L  E6 I% J# N( S9 T3 G# L
8 H) I# D! [" r. i* a
14.1 信号量 488" w3 S* y( O( p8 |3 s
14.1.1 信号量的定义 489
$ C  P5 g. D8 r/ E" L# U) w( B/ R14.1.2 一个理论性的例子 489% a  d' u& S6 L+ i. Z7 f+ [. C
14.1.3 Linux的信号量机制 490% `" H& u3 P3 i6 g8 E% ?$ _: z* G
14.1.4 使用信号量 4928 K( Q( B: O+ O, A! ?
14.2 共享内存 496
, }  H$ G8 K' T  K6 ]4 ?14.2.1 shmget函数 497/ S# v, T: ?4 G
14.2.2 shmat函数 497
5 }. L3 Y. r0 M3 ~7 e14.2.3 shmdt 498, j0 ]( ~6 i  [
14.2.4 shmctl 498
- J1 J  G, r8 g& X' C14.3 消息队列 502
1 e' }; f! [1 u" j* H14.3.1 msgget函数 5027 J/ A, X- _8 U3 [' F
14.3.2 msgsnd函数 5039 {2 B# J, ~* x
14.3.3 msgrcv函数 503
+ s2 d1 D. `7 \( x0 s/ H" B14.3.4 msgctl函数 504
# y( I& T& I7 a- T9 f9 k6 r0 s14.4 CD数据库应用程序 507
% e" z1 }8 c; j, B# k) H6 y14.4.1 修改服务器函数 507$ j) A; o( ?" l7 N
14.4.2 修改客户函数 509# L7 ^7 R" W+ c: I) U: `- G5 s
14.5 IPC状态命令 5115 v7 @: n/ r; y0 o5 S* P0 \
14.5.1 显示信号量状态 511
0 [7 S* U; v8 I" g6 y14.5.2 显示共享内存状态 511
  {0 Z$ Z  D) W14.5.3 显示消息队列状态 511
* r, B! C6 F# e( j/ m* B14.6 小结 512
+ S$ _+ H: s& V2 c- P3 Q3 V3 c2 x( A% h8 W- d. j3 A
第15章 套接字 513
; @) R" ?+ E6 A7 [8 n' c; c1 `" ]% u- [1 P, |
15.1 什么是套接字 5132 V7 s% |, ]; l: C  B+ M7 O
15.2 套接字连接 513
7 q# J) Z6 W) B15.2.1 套接字属性 517
8 F$ W2 n. M: x3 n15.2.2 创建套接字 519/ x1 c: D5 z. p7 s/ a
15.2.3 套接字地址 5201 U1 _. |  a: T4 r% ]
15.2.4 命名套接字 5201 ^% `% F# g, {: F/ N! a% _
15.2.5 创建套接字队列 521
+ e  ^* {% C* i6 c0 H# P15.2.6 接受连接 5212 |5 S, `1 p$ u
15.2.7 请求连接 522
+ s; S- H! R1 L+ `15.2.8 关闭套接字 5236 j/ ~3 ?3 a( ~
15.2.9 套接字通信 523! }+ B3 n7 Z- L' \3 T1 f" k' m
15.2.10 主机字节序和网络字节序 525$ B4 p# U0 t* w; f4 E
15.3 网络信息 527  P3 o+ [; i! k( E2 Z, }8 s
15.3.1 因特网守护进程(xinetd/inetd) 531
9 l% G' l8 O1 h0 ]15.3.2 套接字选项 533
' w& \! T& E) N9 d4 k, F( M8 r% J' T15.4 多客户 534) g# [, P0 @; W. F
15.4.1 select系统调用 537
  \9 Y( o" W% i* {4 d15.4.2 多客户 540+ o8 B) G' F. H8 H' O; g
15.5 数据报 543
. G! K! Z3 d( t/ J; t- B15.6 小结 545
  P4 x& n- o" t1 Q* s) c& u3 }2 `$ L
: F8 g1 O3 I6 V1 O! J第16章 用GTK+进行GNOME编程 546$ z/ K% ^/ u- F9 y- D$ z
% A+ t* a2 D, v9 y/ l
16.1 X视窗系统简介 546
* {( q( ^% L9 g3 H16.1.1 X服务器 547
1 Z; z' S+ I" F7 }; R) m) @16.1.2 X客户端 547
" F. @/ L7 Y( u: ]+ Z. E16.1.3 X协议 547
6 G' m4 W& r! o8 l# [16.1.4 Xlib库 547
! e  D/ I. X# `( q6 `9 F6 O/ H: }16.1.5 X工具包 5477 ~0 ^- n& i5 q! s' `7 J% Z
16.1.6 窗口管理器 548+ f) Y/ K, b& p$ t
16.1.7 创建GUI的其他方法——平台无关的窗囗API 548
8 n* }# _0 B3 m) F. o16.2 GTK+简介 549
- M  m/ C; ~! N" G7 {4 }3 S$ i16.2.1 GLib类型系统 549
* Y) W  P# q* P+ g$ B* u" A16.2.2 GTK+对象系统 550
" |# G. U& Y( f; T16.2.3 GNOME简介 550
* d; s+ R: _# e3 _16.2.4 安装GNOME/GTK+开发库 551
: }: P9 p1 Z) X6 a16.3 事件、信号和回调函数 554
& z% _* ~: B: d) X% H2 W16.4 组装盒构件 556
, H, f+ M5 `( q9 M5 ]16.5 GTK+构件 559. W+ h' @7 P* p( e$ C
16.5.1 GtkWindow 559  J, R0 t) m" ~$ G# l/ b7 R7 E! C* m6 B
16.5.2 GtkEntry 560
% j) w" B+ U6 W8 {0 x! T16.5.3 GtkSpinButton 563
* O" f- _* l" O" B16.5.4 GtkButton 565
5 l5 q# y* T$ g/ f9 |* a16.5.5 GtkTreeView 568
! b  n+ b8 s3 x3 S5 I0 l16.6 GNOME构件 571+ y9 t, @1 N+ S+ B
16.7 GNOME菜单 572. ]$ X- U6 u* j0 Y3 p& C4 D
16.8 对话框 576
/ R, R/ j9 W' P16.8.1 GtkDialog 577
9 u/ `. m8 G7 `16.8.2 模式对话框 578! l$ w( D1 K- z
16.8.3 非模式对话框 579' d+ k9 e  S0 f& u+ t% t
16.8.4 GtkMessageDialog 580
4 M- [# v7 ]6 N7 t% z16.9 CD数据库应用程序 581% ~7 p; T8 @, R& p1 Q
16.10 小结 592
) Q  a  o7 r0 z5 J" N# w, Z  }) K) D, B* _8 R. {
第17章 用Qt进行KDE编程 5939 a2 Q9 k3 `! W/ c" O- O- m/ ~  q

4 C( ~  M2 V% @. L17.1 KDE和Qt简介 593
! q# D6 u- q9 ]% M4 s" P17.2 安装Qt 5941 P! x( o2 K9 j5 e6 g
17.3 信号和槽 5966 ^  _4 A+ t4 q: b! }) \* m/ ~- P
17.4 Qt构件 602* @4 _4 B  I4 n8 m, V
17.4.1 QLineEdit 602
: H6 f" U9 w9 J0 g( x( F/ J3 L, }17.4.2 Qt按钮 605
# q3 a. N6 o* x( @6 @  j' v1 u* b17.4.3 QComboBox 609
6 L8 i1 d7 g9 d, [17.4.4 QListView 613
0 i2 r4 [1 W1 B  E. X0 X0 |+ k17.5 对话框 6153 W5 _% D8 b3 P1 Z) X
17.5.1 QDialog 6153 m$ P( ^( W+ F5 Q& h
17.5.2 QMessageBox 617
4 H6 N* F& ?0 v. F17.5.3 QInputDialog 618
) O# l2 C, T! s: ~' ?! |  h17.5.4 使用qmake简化makefile文件的编写 620
( s# ?: _/ Q; p7 C! O6 L17.6 KDE的菜单和工具栏 6203 _8 n/ B1 {% }3 C0 W4 c4 p, R9 K  Z
17.7 使用KDE/Qt编写CD数据库应用程序 624
3 p7 n: n( \- A7 |$ Q17.7.1 主窗口 624
5 v+ t- E( J! H+ V! p17.7.2 AddCdDialog 627) _1 c$ e7 A5 ?7 c& P# v
17.7.3 LogonDialog 629, N: _2 U" [9 @" F) O
17.7.4 main.cpp 630) W. J5 H* N+ S, J2 g9 v( T
17.8 小结 6329 t- r' E) Y0 G

1 x7 L! @% J5 K" Q4 j9 v3 T第18章 Linux标准 6334 x  B- u& B1 Y' x" D7 \' i4 \

7 O; p" |# B; ]4 l' i18.1 C编程语言 634' z* e' L& S  v6 D) D% D9 r
18.1.1 发展历史简介 634
# n; _4 p9 p+ J& S18.1.2 GNU编译器集 634
0 ~' ~0 H, t$ t& t( T9 C% R! e18.1.3 gcc选项 635
8 J: x) I& @% d18.2 接口和LSB 636  F: Z- O/ |9 k- q
18.2.1 LSB标准函数库 6373 X- t3 a# f5 _
18.2.2 LSB用户和组 638% W8 }7 g- E( o  V9 x# M* Z
18.2.3 LSB系统初始化 638
0 u) y: o* S5 o18.3 文件系统层次结构标准 639; {. t( O1 |. Q4 @; Y' R3 T
18.4 更多标准 642& W0 H4 b6 ]$ F% i
18.5 小结 642
' f* e! I+ V7 @& U$ H4 Z! x% ^5 x! n7 g$ y) p& n" U+ l' b

: S6 B6 ]  e- c

评分

参与人数 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 | 显示全部楼层
看起来是不错啊( U# R$ d* R- U
想知道小甲鱼最近在做啥?请访问 -> 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-5-3 13:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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