鱼C论坛

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

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

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

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

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

x
TB1SlhmMpXXXXX7XVXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg

9 ^! G0 Z9 J: y8 l: K5 Q$ D% w: \
书名:《Linux程序设计》: {1 S/ A. h1 W/ u3 x$ ^8 l
作者:马修 (Neil Matthew),斯通斯 (Richard Stones)
: d. @, d& O) R( x4 P译者:陈健,宋健建
, P8 ^' b# P9 M# h, t+ l3 }+ \出版社:人民邮电出版社
9 Y( B9 A6 L* v# V4 f1 w  i: k出版年:2010年6月1日(第4版)% o( ]0 c5 K5 D4 V
定价:99.00元* Z% R9 W% W: e' ]6 q" N8 U
装帧:平装; K: `, ^) ~( p
ISBN:97871152282151 O+ Y5 M, a$ R; ~

1 b8 v: ]* O. R8 g购买链接:
0 S7 Z9 a& n+ V) r4 `$ o& ]
0 C% b# t1 k( q, U3 D! O& b7 U/ I7 }

/ Z& Y9 v- q: c1 T9 D; F% Q3 f亚马逊(Kindle)-> 传送门2 B  M6 S# ^* [3 b

# B8 J- ?" C! \, K3 U5 q. Z亚马逊 -> 传送门
% f$ {' V# V. q7 Y' ~" _2 u$ B. H. a1 c5 j- H! Q3 R4 z1 G
当当网 -> 传送门
. o/ ?& W+ n- D4 d7 l9 k5 E3 x
; E" i8 ]8 `# i! ^% ]京东 -> 传送门
$ E' l" y0 n, a1 I7 l' x0 [/ |( b( K6 w
天猫 -> 传送门# l) S* b. [( A
; Q* r( s" H8 }( k+ ?  `
5 Z9 B  k* |% u7 a9 a" _7 U" u6 C  G
内容简介:2 i( V. s( s+ k8 W3 [

( n7 g, C5 T" C
3 S: R3 `7 r5 y8 P7 o8 x( U5 P  o
《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。
" m. @: @7 A. ^% w2 l2 j
9 Z) ?  i7 |2 q  M3 I+ |/ B8 p! S& P《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。
! }3 v/ z* r  ~* |8 i3 j  J6 m, Z1 o& A+ s0 w9 S
, ]% a& D) U& O( Q# Y: `
目录:. ]+ t0 f* v7 p$ G' c# ?

, F6 g1 t1 S6 ?6 P8 c: @/ ]
4 `# a% q$ z3 f$ O4 T. R
第1章 入门 1
* b- V' y7 K: B/ H( m' X  i; g# d, r
1.1 UNIX、Linux和GNU简介 1' J% |. R' [$ C& O" Z% \- j+ l& D: z
1.1.1 什么是UNIX 1
& H* ~3 s: d7 i' h1.1.2 什么是Linux 29 g  w/ Z5 I3 i
1.1.3 GNU项目和自由软件基金会 39 B; e/ |3 O; `/ e8 v( t% H" g
1.1.4 Linux发行版 3
6 T$ q& I) d% J1.2 Linux程序设计 4" ?) {% ~! c/ _+ f& `0 @
1.2.1 Linux程序 4
3 h+ h8 E& T- n- Y8 N/ z1.2.2 文本编辑器 5
8 h/ I& w7 i& N  [1.2.3 C语言编译器 57 c; H% `2 E: x6 f& l
1.2.4 开发系统导引 7/ r: w& ]2 Z% H( I6 W2 e
1.3 获得帮助 12' O! d/ @& Q, w8 q' C( e
1.4 小结 142 F& M3 S, u5 G' S# N

, O; P( ?4 {  D' v* q$ ]. N! p第2章 shell程序设计 15  u# \+ C! L/ O+ _1 c' a2 i( O
% t& F7 q  Y6 K9 [0 n
2.1 为什么使用shell编程 159 C& m9 ^4 [" U9 G
2.2 一点哲学 16
# f' ~2 e$ K" t+ c$ R0 x1 S2.3 什么是shell 165 g0 R2 s3 \1 y4 G
2.4 管道和重定向 18' \2 s- v5 e6 B6 ?- V  B! G2 U" b+ J
2.4.1 重定向输出 18/ e  S( [7 E1 h+ r
2.4.2 重定向输入 19
4 T6 }, n) f. U: N9 i2.4.3 管道 19
, Y) ^# H4 J; }5 q2.5 作为程序设计语言的shell 20
' A, }: O, t7 Q4 g  v3 m/ b' p& c2.5.1 交互式程序 20
* ^/ D- U/ {1 E. C2.5.2 创建脚本 21
7 I6 l" Y1 B3 r- C2.5.3 把脚本设置为可执行 228 I0 f( ]6 T) t0 G7 N
2.6 shell的语法 236 M; i3 V, P5 S6 U% t8 o# w
2.6.1 变量 23+ q. f5 z' l9 j1 Z$ r4 q6 F* O
2.6.2 条件 27
$ x( w1 r( [2 b, H7 ]% w, a) h! }2.6.3 控制结构 29# P& ?; v) b- Q3 }8 `1 K
2.6.4 函数 39
# b4 P  a; R+ T* W2.6.5 命令 42
  `$ k* R$ c3 Z" V5 _' g& f3 G2.6.6 命令的执行 58' k0 r5 G3 ]* T) K0 Q7 ~
2.6.7 here文档 61
. M6 D7 E9 c7 v& J* ]" g2.6.8 调试脚本程序 63
' ?) ]7 z* K/ j* l# b/ ?2.7 迈向图形化:dialog工具 63
$ l- c6 Q+ V$ ^% @% d+ g5 }1 X2.8 综合应用 68
, g# p) Y: K# f2.8.1 需求 68( A  O. H$ @! B8 x- x/ j% d6 e
2.8.2 设计 68* p, y2 `, o. `: Z
2.8.3 应用程序的说明 76* O% i2 o) H5 P, p5 E  G6 c; v
2.9 小结 77
" @1 s  T  u6 Q( f 2 p+ W- X" R0 ^& J. o( f
第3章 文件操作 784 b: p9 L' Q. [4 M

& D, h% ?6 |) L6 |% ?3.1 Linux文件结构 78
. Z% O% ]+ U  {" C3.1.1 目录 790 M9 g( y0 e+ d9 x! w' b* j
3.1.2 文件和设备 798 u# T9 b3 U6 g7 `5 \' P8 s& Z
3.2 系统调用和设备驱动程序 807 s; D- i* g2 ]2 h, A
3.3 库函数 81
5 |4 c6 W$ r' h/ F5 d3.4 底层文件访问 82( N0 m! S0 z7 B& U$ q& i( X8 h
3.4.1 write系统调用 82
$ p4 J0 }( Q! @  s8 D0 S( d3 y3.4.2 read系统调用 83/ l! z* h9 O6 Q, r% u- M/ p  X( V
3.4.3 open系统调用 84
4 J: B; ^% {) q6 F3.4.4 访问权限的初始值 85' P8 R! O1 E/ G% V  ?& D5 W& J
3.4.5 其他与文件管理有关的系统调用 88% c9 @- ^+ _- c/ C9 X& H+ e( _
3.5 标准I/O库 91: j. V; w2 z, ]" U  `; E4 ~7 u, ]
3.5.1 fopen函数 91
& i  v% y2 \6 w7 p- N6 ~3.5.2 fread函数 92
! U- i( _  s( A% {1 m3.5.3 fwrite函数 92: `6 x: K8 M2 `: D4 f' d/ t
3.5.4 fclose函数 92
: [. w; Z& E5 Q, n: W! y3.5.5 fflush函数 938 b( w) ]+ d3 y( }: q9 \+ x
3.5.6 fseek函数 93  `0 g7 O. x: Y9 U/ X0 \; l+ m
3.5.7 fgetc、getc和getchar函数 937 x+ D* D: u: d% K7 p- K7 K
3.5.8 fputc、putc和putchar函数 94
  T+ |; Y. x& e3.5.9 fgets和gets函数 94( J8 I' ?( }, i8 G% J
3.6 格式化输入和输出 94
6 V. t/ l  H) a* J3.6.1 printf、fprintf和sprintf函数 94
1 H) L3 c+ H6 W4 R: F3.6.2 scanf、fscanf和sscanf函数 96
# V5 s6 ~4 w# `6 u3.6.3 其他流函数 98
( h  h, f# `7 \1 c4 I3.6.4 文件流错误 99
6 U3 }2 k- f, z6 O& x3.6.5 文件流和文件描述符 99
- L' F* Q+ _; q2 K" b2 D2 v3.7 文件和目录的维护 100
+ q1 W" y- m; c9 @$ s3.7.1 chmod系统调用 100" ~! f8 m, }/ m( E, ]7 t
3.7.2 chown系统调用 100* r" n7 K2 |" {' X
3.7.3 unlink、link和symlink系统调用 100- l( U+ X, }$ D& z" d8 d$ a
3.7.4 mkdir和rmdir系统调用 101
( s0 g  V5 q, H/ l2 ~& l3.7.5 chdir系统调用和getcwd函数 101
1 I  i6 U* X+ N6 R3.8 扫描目录 1021 r, ~6 u) N7 N6 N( P( O
3.8.1 opendir函数 102
6 o" S' U0 C" m; u1 J3.8.2 readdir函数 102
+ S* P' R% n4 Q* e- i; p# J3.8.3 telldir函数 1032 X, s3 a  }& [3 N0 Q2 [( }' I
3.8.4 seekdir函数 103
' K  i; o! d! H4 Y7 A3.8.5 closedir函数 103, h7 F( `  p' y* u  K* O$ N# t7 t
3.9 错误处理 106+ ^+ B1 v: P& n& b
3.9.1 strerror函数 106& ~) q9 I5 \( V* ]
3.9.2 perror函数 106: @/ `2 \& `# J
3.10 /proc文件系统 107* L' M0 t' i& u
3.11 高级主题:fcntl和mmap 110
% \& @* i1 E: C" C6 m# ~7 p3.11.1 fcntl系统调用 110
8 a: ~9 w0 }3 Y) }; |3.11.2 mmap函数 111. [( {5 `  X- I' n- l* t! A9 P
3.12 小结 113
6 }" R/ Z# ^8 l2 E& Y: A5 @/ w3 }
# @7 G6 N9 k9 c) ^+ o* [第4章 Linux环境 114& s, N0 k: y# U
; O' H( V% z. M
4.1 程序参数 1145 U1 T, N* N( ]0 y# O0 A3 @6 B
4.1.1 getopt 116
* ]$ h2 X9 D; u1 x4 y, R% a7 V  Y4.1.2 getopt_long 118
5 _# c& D+ T8 s4.2 环境变量 1202 Y* i- M5 A( A$ S4 U  M1 p
4.2.1 环境变量的用途 122/ k" x5 w( k9 U: _$ {. o7 ]
4.2.2 environ变量 122, p4 N6 f% g' h3 {6 V. D
4.3 时间和日期 123  y; M2 f- C- S% \/ ?
4.4 临时文件 1294 D* s+ ?( z" s/ I; U8 p$ D
4.5 用户信息 1312 R. }2 c, u4 n7 {
4.6 主机信息 134$ u- O& O0 l7 A, b. F, S
4.7 日志 135
: J, l" D; V- R" b2 L! n4.8 资源和限制 139
" q3 G) ?, s) }9 x4.9 小结 143' x9 r! d- Z2 ?, J$ u

# h8 d% F5 a  f8 O, D; L+ r7 H第5章 终端 144
2 y' c' z, M3 P  h% g8 Q
5 e$ r0 S( r4 L/ z+ O2 f5.1 对终端进行读写 1442 r! y4 ?5 u: z. b
5.2 与终端进行对话 149
; c% c6 i" y- u6 P  e% `# v5.3 终端驱动程序和通用终端接口 151
" _. a/ S. t9 g% l, T+ O. M2 V5.3.1 概述 1519 ~; d; ^4 z" F+ U0 L! L1 u
5.3.2 硬件模型 151
' v$ Y0 \: r3 \) p) u. h% `% c5.4 termios结构 152
. d. u. |, V* U! a7 [3 S* u1 O) v5.4.1 输入模式 153
4 q- g/ E3 P1 ~. f. G7 R0 a5.4.2 输出模式 154
1 Y6 e/ N4 J7 r5.4.3 控制模式 155
5 L( g& v1 F1 [5.4.4 本地模式 1550 S2 y3 R: e% Y9 z! F% H
5.4.5 特殊控制字符 1550 `+ O1 n. A  x
5.4.6 终端速度 158
9 X+ P, Q& ^6 {9 n/ J5.4.7 其他函数 1598 E  i/ Q# {9 R5 v: F3 n& o
5.5 终端的输出 162
/ w4 d# O4 o" H- c* S! V, B% D+ I' f5.5.1 终端的类型 163
' D" v+ I; M3 J5.5.2 识别终端类型 163
! F% w" M3 z/ L9 @* d# |9 ^5.5.3 使用terminfo功能标志 165
& K$ R, z, x) D3 ]( [. A5.6 检测击键动作 170% i) _/ K: C# x( {8 Y
5.7 虚拟控制台 172
3 a( f3 t& J+ [. P5.8 伪终端 173# T! H. U0 O. R7 E9 j
5.9 小结 174, n4 k4 N& B  u( J6 f% z% b
% }) h+ M1 W' i" C3 i  q! p
第6章 使用curses函数库管理基于文本的屏幕 175
# l. g6 N: |+ X2 A0 ~* h; A9 {, C. T+ H
6.1 用curses函数库进行编译 175* L* z4 V# `# N& A$ F# @& z! [& X
6.2 curses术语和概念 176
. O( D4 ~* e2 t: X/ K6.3 屏幕 178
+ B3 w5 h% D6 ]; C6.3.1 输出到屏幕 179- ?& D+ l0 p1 O4 o" \/ w
6.3.2 从屏幕读取 1803 ?3 `; i2 n4 e! E2 V& q& f; K
6.3.3 清除屏幕 180* A: X) E* ^% \+ \
6.3.4 移动光标 180
9 N. _9 j$ ?6 G0 a& o6.3.5 字符属性 181
7 R2 j* g+ H: @& u' V0 `6.4 键盘 183
2 I3 O* }9 X# r6.4.1 键盘模式 183
7 p2 ^7 d: r7 J6.4.2 键盘输入 184% J! H9 o) H/ w  q
6.5 窗口 185/ ^2 h. Q5 y, k
6.5.1 WINDOW结构 185
) O* ?7 r8 ^% B6.5.2 通用函数 186( p9 r. M0 N8 \* L. z# f" c
6.5.3 移动和更新窗口 187
+ K) r. ~! b7 ]. T, e6.5.4 优化屏幕刷新 190  b; b0 z. k$ b2 V* e: y/ g+ e0 J
6.6 子窗口 191* ?' n4 l9 o/ b- t" T
6.7 keypad模式 1934 o, ^9 M5 H( U* J# `8 \: t7 K
6.8 彩色显示 195
  k- m% h1 b; F1 p/ ^8 p6.9 pad 198
% e$ T. @. @& y/ B+ i3 R# `6 b( E1 |6.10 CD唱片应用程序 2006 C8 ^9 `. F5 X: V: D6 D* B
6.10.1 新CD唱片应用程序的开始部分 200
3 g, g* d; L3 J& L2 b! k, G6.10.2 main函数 202
3 w8 T* J5 G0 o6.10.3 建立菜单 203$ S9 W) w2 U7 M$ }( S: J4 }% A5 l
6.10.4 操作数据库文件 204; M( H- c: j8 H. Q4 X7 f
6.10.5 查询CD数据库 209
( {0 g* k- m2 A# f6.11 小结 213" F% k- T  J5 g% F* F2 B1 N" @
1 {' b* Q: X! V
第7章 数据管理 214) r$ I6 T. J1 v  B. t

/ p: u0 g' i; ^/ c7.1 内存管理 214
) \1 V: p& L2 e( ?7.1.1 简单的内存分配 2147 ^9 \, M3 _% y9 \( [& z. P' o
7.1.2 分配大量的内存 215
' |6 j# \0 G- p3 I/ E7.1.3 滥用内存 218- d. l2 J) R+ z: Y- k6 t# `
7.1.4 空指针 2191 {9 s& q# b% r1 a% E$ h$ O( n9 r
7.1.5 释放内存 220
" u0 p9 b$ A  U2 N& u7.1.6 其他内存分配函数 221
7 Y, A( Z# o. ~! x( i+ N7.2 文件锁定 222
, D0 G1 K: s/ l& K" A( W7.2.1 创建锁文件 2222 i2 X6 A: h/ |' q* i4 S
7.2.2 区域锁定 225/ i( D/ A* c0 L% M& F' a2 e- p
7.2.3 锁定状态下的读写操作 227
0 j5 B* c' x! X9 |: B. W7.2.4 文件锁的竞争 232$ X- p# J4 Q+ S! ^" u5 g
7.2.5 其他锁命令 236
) S& Q6 v: x+ @% a7.2.6 死锁 236
6 J; W; d8 g3 O& ]& d  U7.3 数据库 237
: L- {) X* B$ h. d" w  t7 D& {6 y4 v7.3.1 dbm数据库 237
) m6 p6 c/ p1 \3 }5 o; ^4 c7.3.2 dbm例程 2388 Q' O; m7 G. b# n+ l, I4 r1 B
7.3.3 dbm访问函数 239
& ]. P! h% P# A) a4 v( y7.3.4 其他dbm函数 242
: }* s0 [% F8 v! F: R" Z% y7.4 CD唱片应用程序 244" v0 |8 C. v, M+ ]  p
7.4.1 更新设计 244
) c1 Y# H, A- C& ^5 D& B5 d7.4.2 使用dbm数据库的CD唱片应用程序 2458 N$ E- W7 k. Q
7.5 小结 2628 j1 t0 o/ T; [" ?. K# y+ K* A

. Y( i( W* g% m第8章 MySQL 263
$ Q) F' T7 u9 c) g6 w
; X- D8 D* s9 _- o/ Q8.1 安装 263
- q$ A9 V: Z4 I0 ~8.1.1 MySQL软件包 2642 P( P" B% @8 U/ v; g0 i, O# g
8.1.2 安装后的配置 266
5 O% _$ n' m2 l- h5 b1 G  a. V8.1.3 安装后的故障修复 270' u8 @3 B$ }3 j/ \- r
8.2 MySQL管理 270
8 L. v( D. z% ^, L8.2.1 命令 270
5 h  P% W: X* h1 V3 R8.2.2 创建用户并赋予权限 274
2 _' U6 W  a  f# ~( f  \8.2.3 密码 276
, K6 \( {! O1 W& r0 \% \8.2.4 创建数据库 276! i4 V3 Q3 Q1 z- O
8.2.5 数据类型 277! @1 X, j" f! ]
8.2.6 创建表 278
' `2 C( o0 _3 I; O8.2.7 图形化工具 280% T5 z1 `& \& e* r
8.3 使用C语言访问MySQL数据 283
' K/ F7 M" l6 v; s5 Y3 c8.3.1 连接例程 2839 O' D, y3 R' p6 \0 q" }) [
8.3.2 错误处理 287
. p) Y. ?3 K! h8 @$ N* h8.3.3 执行SQL语句 288
" w8 o( G7 C0 c1 N% u8.3.4 更多的函数 301
9 u& D- p* Y. C  y8.4 CD数据库应用程序 301( t7 W0 ?% N. q" H1 w; }
8.4.1 创建表 302+ H7 U" e* w9 h$ ~$ C
8.4.2 添加数据 304' O, T7 D1 p8 Z0 ~. P- U+ i
8.4.3 使用C语言访问数据 306/ |) d! C/ i: {. x6 u  D: j  j7 l. O. [7 R
8.5 小结 316* T$ _, T# U; f! |; u

' X' B& ?6 C! T$ H3 S8 \第9章 开发工具 3178 u" \* c6 o7 K9 E% h; A

0 S4 m' Y1 ]9 Z/ A# b1 f3 ?7 `9.1 多个源文件带来的问题 317% E) H. W; \+ J6 }: B& F
9.2 make命令和makefile文件 318
7 J, s8 H6 N5 ~9 t$ j- U9.2.1 makefile的语法 318: Y$ _( y' s8 _' ?) d1 H3 F  @3 W/ J: w4 V
9.2.2 make命令的选项和参数 318( D- C  s) G) d% E" \
9.2.3 makefile文件中的注释 321
5 P' M! v; P/ S7 I3 V* ?9 E9.2.4 makefile文件中的宏 321
% Z& j* j' D; N, H9.2.5 多个目标 3236 \# @9 B5 K& \& `- S
9.2.6 内置规则 3259 o( O! v, M1 M, }) @' N
9.2.7 后缀和模式规则 326# R% u( z' a8 m; d
9.2.8 用make管理函数库 327" q( \' r4 M4 n7 g
9.2.9 高级主题:makefile文件和子目录 329
* W) p# o' Z+ c4 U9 b0 T* h+ n9.2.10 GNU make和gcc 3297 S" n' V# q& ?. u5 [0 h/ r1 [
9.3 源代码控制 330
+ ?0 r- P0 n  b  V" T4 P$ x5 n7 B  X9.3.1 RCS 331
1 v8 H9 ]5 b  P3 c9.3.2 SCCS 336
. N4 }7 P  H2 Z5 w  g% E. E9.3.3 RCS和SCCS的比较 336  q% W8 m+ ~+ W# q, [
9.3.4 CVS 3379 {$ Z) j& f: e/ M0 [: B: [
9.3.5 CVS的前端程序 340
' U6 e6 u( X& K9 u$ }6 v9.3.6 Subversion 3419 @4 p/ R# X6 X: D" o
9.4 编写手册页 342/ m9 O, o9 z- [& s
9.5 发行软件 345/ T3 s# `/ J, N3 D% s- y0 u$ H
9.5.1 patch程序 345
( d( S' k/ o, K$ N9.5.2 其他软件发行工具 347
1 V, C( `% K  C9.6 RPM软件包 3499 A5 W. s& K3 Q( {0 h5 d' M  {0 M9 h+ y
9.6.1 使用RPM软件包文件 349
- g4 q7 ]  B4 ~2 L4 j9.6.2 安装RPM软件包 350
4 `3 o4 `5 l, D8 T; q( z9.6.3 创建RPM软件包 350% q% [; K3 Z; H" E; ?) k1 M
9.7 其他软件包格式 358
, m$ W; Z5 k6 s" m! Y- G/ @9.8 开发环境 3587 @3 G9 a9 c% G/ ]1 P; @. R
9.8.1 KDevelop 358
! ^. R% {" E  c; S9.8.2 其他开发环境 360  t/ h  i1 s1 L+ A; d& \5 E" z  F
9.9 小结 360, s6 h  a2 Z8 m2 k. J; k) ]
- X7 N5 }. z7 S5 L% w' ~, C
第10章 调试 361
# D2 c% }( r' h# C0 M/ B0 A/ m; T1 ?0 P  i5 M! {# x
10.1 错误类型 361
* E! @/ L; r* K  k0 [  J* L10.2 常用调试技巧 362
/ I) x3 \; R  T8 W10.2.1 有漏洞的程序 362! f* i& v# ^* ?6 ^6 `
10.2.2 代码检查 364
& i) w9 C5 M3 O) \10.2.3 取样法 365
1 M- P; }6 ^8 g6 n. S; X& x- ^+ B. h10.2.4 程序的受控执行 3674 ?. g# o. A# H1 Q" ~9 {5 J
10.3 使用gdb进行调试 368+ W/ m, u& e9 B
10.3.1 启动gdb 368# `: P/ ?; G+ i8 U3 X
10.3.2 运行一个程序 369
. t' I& M7 N9 y' d1 y- {# v10.3.3 栈跟踪 369
/ n* \# Q' \2 M9 ^10.3.4 检查变量 370( b9 Y2 E/ D# N' `+ j
10.3.5 列出程序源代码 370
/ [7 [0 x0 |; u" C10.3.6 设置断点 371
; t" ?* J2 U) C5 K10.3.7 用调试器打补丁 374- }) Z' m: t0 j, \. d/ G8 C6 R
10.3.8 深入学习gdb 375
# X7 E# [, o  C' c7 u3 w10.4 其他调试工具 375- R) y* w: H# s; c( E
10.4.1 lint:清理程序中的“垃圾” 376! g) K* i% p. ]9 J
10.4.2 函数调用工具 378
# s4 l( I# O9 N+ X1 Y/ }10.4.3 用prof/gprof产生执行存档 380
+ O* a% L  U8 B5 \9 }10.5 断言 381/ h5 @9 v7 Y0 l2 Z, i
10.6 内存调试 383
  |, \% ^3 X, R& \5 x. Z: g7 W2 L- W+ J10.6.1 ElectricFence函数库 383
9 P" R  I+ u7 p; |10.6.2 valgrind 384# B: X% j! [) o5 V( Y6 x4 _
10.7 小结 387
7 `  ^8 K! K/ i# k/ I! X. A# [7 X! }
第11章 进程和信号 388
& w8 t- t1 D, {  Z; |" m8 S- `/ q
* X1 t- u0 [% ^; ~7 s11.1 什么是进程 388
2 j. o* k; D# s9 X! C1 P1 O11.2 进程的结构 3889 `" y/ |7 {- @: ]: h- v9 M1 H7 S" w
11.2.1 进程表 390! B! F: _/ P3 W7 C7 Y
11.2.2 查看进程 390
* Q' S* }5 a+ g' Y11.2.3 系统进程 3919 o0 b6 `3 t: f0 T6 H
11.2.4 进程调度 393; S" M) a1 q& y* n7 K. ]
11.3 启动新进程 394
6 v# o6 D# t4 D  B11.3.1 等待一个进程 3994 J, u- W5 t, b  s: C
11.3.2 僵尸进程 401; f  Q! r, z5 C" y, C: y2 |2 d
11.3.3 输入和输出重定向 403- p! D8 \& p, L' m2 m! S
11.3.4 线程 404$ ^9 q2 w2 q- Q1 ]% s+ Z8 y
11.4 信号 4040 }: r2 k7 U+ m/ l* }% k
11.4.1 发送信号 408, z% v5 I" {1 E4 o
11.4.2 信号集 412
3 i+ A# {: w+ O1 ~11.5 小结 415# Q$ c8 U" D% x# W

" x  T# z$ H" s  k第12章 POSIX线程 416
' i& u- c5 T" z
. c" x! J$ `4 X( Q; q8 K12.1 什么是线程 416
2 h. b# Z8 @& F. z* E. N9 U+ {12.2 线程的优点和缺点 417* N: V. E8 m' e% j
12.3 第一个线程程序 4182 T& `) F) G& G1 _4 {. k. \6 {& O
12.4 同时执行 421+ s9 m; Y3 a( \
12.5 同步 4239 X2 m9 T/ o! i
12.5.1 用信号量进行同步 4238 ^; ]- l3 @; \3 W8 Z; @
12.5.2 用互斥量进行同步 427
- b8 u# C0 n" V, Z& w12.6 线程的属性 431) ^# ~1 N1 P. Y) r: B
12.7 取消一个线程 435
/ H. m+ s3 R4 O6 h# U12.8 多线程 438
( A8 |  m  S4 [) ?9 l12.9 小结 442, C% L( w( n2 Y# E* y( A1 s% q) N

3 w8 y& F1 P; d! x9 ~: c' m第13章 进程间通信:管道 4437 @. ?  D  w" x" A

& [# p4 H  t( ^3 o7 g& T; S7 V13.1 什么是管道 4433 M' C8 L% F% i
13.2 进程管道 4443 e4 u+ c  T1 e9 U) k, t
13.3 将输出送往popen 4458 f8 m% K/ j2 f4 {4 v9 _
13.3.1 传递更多的数据 446
. j* ^+ m! K# s, N9 ?13.3.2 如何实现popen 4477 g; _# C4 W* n- ~% E5 {" J( O# R
13.4 pipe调用 4492 Q/ P4 j/ t" `. d" G" z0 ]9 b
13.5 父进程和子进程 451
# u) ]; M( P' ?, K* x13.5.1 管道关闭后的读操作 453# A0 y$ K6 O* ]& M* `
13.5.2 把管道用作标准输入和标准输出 454
* E0 f, T/ d* [2 S13.6 命名管道:FIFO 456
2 T! m7 k$ q' u0 v+ ~13.6.1 访问FIFO文件 458* D  z9 G4 A* |
13.6.2 高级主题:使用FIFO的客户/服务器应用程序 4647 ^& ]! ^$ B9 {* F
13.7 CD数据库应用程序 468+ z! ?+ f# G$ `0 P% _6 a1 v1 f
13.7.1 目标 469
  c6 _. p: g7 }  Q, `' }4 J13.7.2 实现 469
  g$ K6 b7 k$ z7 k13.7.3 客户接口函数 472
5 C$ Q+ T- e( \5 \# p& a2 T13.7.4 服务器接口server.c 478& k0 v& ]. Y  s5 H
13.7.5 管道 481
% [! l1 f. ^2 r' G13.7.6 对CD数据库应用程序的总结 487
( ^% J+ O9 r6 |8 i# V13.8 小结 487
& l& F# ~7 l8 @/ V8 L4 C
! S! a& ~; H+ @! y0 J第14章 信号量、共享内存和消息队列 488: [( L0 q7 A0 B9 ?$ K
8 ?" ?( [; n1 K. B7 ]( i: A" z" `3 M
14.1 信号量 488- y+ S# Y, |3 O' i' Y
14.1.1 信号量的定义 489
$ r& j5 X+ M) X( h8 d14.1.2 一个理论性的例子 4890 B. i1 a* B1 D* j  S. [
14.1.3 Linux的信号量机制 4902 N" \3 \/ m* k. l
14.1.4 使用信号量 492- h: ?0 S( _& k" X# Q4 s
14.2 共享内存 496
2 ~# X! |; j5 i1 _/ j14.2.1 shmget函数 497  m" L6 @+ R9 |! M6 X, Y
14.2.2 shmat函数 497# f5 j$ E6 U0 w" h, B
14.2.3 shmdt 498
$ n& ^/ b# F$ y5 c14.2.4 shmctl 498! v- o0 ^1 e4 V9 ^
14.3 消息队列 5025 E2 O7 L  h0 W: o7 d
14.3.1 msgget函数 502% j$ f+ I% a( p  H
14.3.2 msgsnd函数 5034 M) f' i+ x) V* ?1 I
14.3.3 msgrcv函数 503
- b4 A2 g. |1 a1 O9 K14.3.4 msgctl函数 504
) m$ T4 f* J" a; _- q+ B14.4 CD数据库应用程序 507
& m! T6 J. m- Y. G2 T5 g; z/ x14.4.1 修改服务器函数 507. N% ?) ]/ x) E0 M& `
14.4.2 修改客户函数 5094 O# f3 I9 s# U. _0 G
14.5 IPC状态命令 511
5 t- @- p, |/ l( Q# S: C- J14.5.1 显示信号量状态 511
( ]6 l1 X7 ]$ f6 ]' Z14.5.2 显示共享内存状态 511. U. g9 H3 N( u4 k2 h
14.5.3 显示消息队列状态 5116 s" _/ {* a! Z' b) w
14.6 小结 512
6 o: q" h" ^- {9 O4 X0 m3 Y3 [/ H  K, ?6 F( |
第15章 套接字 513
% Y% D/ y2 ^1 T  s, r( X( @: W, J  N! }
15.1 什么是套接字 5132 }! I! N$ V: x& ^! h1 F; ]& b$ O
15.2 套接字连接 513
: k& `, S% T6 u- _4 D* S15.2.1 套接字属性 517
  W% r- C& n- p0 ]; I1 g15.2.2 创建套接字 519% ^8 o; _4 m* k2 S1 I
15.2.3 套接字地址 5206 f3 E( g9 h' ?$ R
15.2.4 命名套接字 520
) x+ W0 Q8 L: W9 D( \15.2.5 创建套接字队列 521; j( H9 b. `! g/ W& s
15.2.6 接受连接 521
* G2 v% V* h: H; {# a- l2 u15.2.7 请求连接 5225 E/ ?/ I! X3 ?2 `+ U  ?9 a, B1 q
15.2.8 关闭套接字 523
0 i& c9 G) G9 n15.2.9 套接字通信 523
7 k5 R9 g' L" @; H0 F) l9 y15.2.10 主机字节序和网络字节序 5254 g2 N, F2 [) z( {+ m6 H; n
15.3 网络信息 527
6 u1 h) g1 b% G1 q( Z1 ~15.3.1 因特网守护进程(xinetd/inetd) 5316 y+ p6 b( R: \8 `" G+ Z" i
15.3.2 套接字选项 533
( h2 f- L5 H. o) \1 t15.4 多客户 534
4 I/ I( x0 O2 i5 T$ B/ R15.4.1 select系统调用 537
2 x# P0 _/ ]7 d  `8 t15.4.2 多客户 540
& M. T. n, Y6 A( p) C+ Z1 D% B15.5 数据报 543
0 t8 s- @8 K. x- N  b15.6 小结 5459 j4 U- n3 V6 N. k2 K

5 ^( ]! Q0 q. \( g$ y第16章 用GTK+进行GNOME编程 5466 o9 Z/ [% w! v: d# X

3 D* j4 Y/ M4 a& X( h* ]2 A16.1 X视窗系统简介 546
) O/ t7 a  N- L16.1.1 X服务器 547
7 e! p. i* T, f( H+ l1 Q16.1.2 X客户端 547: d) q% E) B3 x4 `
16.1.3 X协议 5477 t3 Y4 o+ ~" H5 j, R
16.1.4 Xlib库 547& \; D# o* L9 u4 V: L# n
16.1.5 X工具包 547
+ u& ?# T+ B1 N+ w7 j; `16.1.6 窗口管理器 548
1 q' F9 {' g0 _& P) ^16.1.7 创建GUI的其他方法——平台无关的窗囗API 548% G( [& b  H+ ?- Q' s  P1 H# C
16.2 GTK+简介 549# Z7 b  D$ ^# t# f1 ]% r& @" b
16.2.1 GLib类型系统 549
5 Y, }! x# M* P! U16.2.2 GTK+对象系统 550- l% ^  d3 d3 X! r  c
16.2.3 GNOME简介 550
1 \( `# A$ b; D4 \8 D16.2.4 安装GNOME/GTK+开发库 551
# y7 P. ~% Y3 G: B* s16.3 事件、信号和回调函数 554% e$ o7 [6 k* [5 i5 H" X5 }
16.4 组装盒构件 556
* J) ]$ z. J" G/ K5 m16.5 GTK+构件 559$ N- p+ i( X; P4 P2 _, w
16.5.1 GtkWindow 559
" w* ?  v: d0 v+ k3 Q# Z& C" Q16.5.2 GtkEntry 5606 Y$ U0 z* H# a# k# x3 S4 h
16.5.3 GtkSpinButton 563
+ P7 }) d+ j5 F9 Z2 v16.5.4 GtkButton 565# x5 Q5 Z1 r) Q$ h' T$ k+ _
16.5.5 GtkTreeView 568
) ?7 ]/ x9 m7 M4 p6 Z2 Q- c: q% A16.6 GNOME构件 571
2 O# M+ t3 f! C4 V% O# F) M16.7 GNOME菜单 572  S. Q" y% d9 @" h1 d/ Z
16.8 对话框 5763 V% N; C, c! n& z( S9 E
16.8.1 GtkDialog 5773 k& `* u1 h: T" _" [" g! i' }
16.8.2 模式对话框 578
( C" C8 e4 w" m2 D$ ]. |16.8.3 非模式对话框 579
' Q' H0 h; O3 _( H16.8.4 GtkMessageDialog 5806 }* ?1 H  ]2 Y
16.9 CD数据库应用程序 581
( [: t; L/ X3 Q0 Z16.10 小结 592( a6 D" L/ p- ^+ W1 L

5 K# \: r7 x3 f, m1 W第17章 用Qt进行KDE编程 593
( ?; j, n% D" l; x" }9 w3 b/ O; t
6 w8 h2 C0 C) m6 l; m3 t17.1 KDE和Qt简介 593
% S; ~( \) |/ c% x17.2 安装Qt 5942 D6 y6 c% p4 M
17.3 信号和槽 5969 f# M- [3 U" T1 S, W
17.4 Qt构件 602
$ M3 [1 A: r/ A4 C: L* u17.4.1 QLineEdit 602& v$ d. W  R+ I9 P! V+ V
17.4.2 Qt按钮 605" j7 U$ Y& \3 {
17.4.3 QComboBox 609/ v8 Q) v: c4 j' _
17.4.4 QListView 613
6 T2 k9 ?6 R- C1 G" X9 d8 _17.5 对话框 615
- b8 s  o; R) b+ o: B% B17.5.1 QDialog 615: ^; e* O; ]6 `" ]& D
17.5.2 QMessageBox 617
& u7 J3 a+ H! t% ^/ B$ n17.5.3 QInputDialog 618
; w7 C+ U6 D$ |; f$ N6 B17.5.4 使用qmake简化makefile文件的编写 620; V3 e$ y1 ^* C. M6 K8 i, Q- }. U
17.6 KDE的菜单和工具栏 620. u1 B6 {+ E0 ?" e1 l5 A7 l
17.7 使用KDE/Qt编写CD数据库应用程序 624
3 f9 ?8 t2 @& W4 ~17.7.1 主窗口 624
6 z# `$ D' q& r& p: K/ x. z9 v. [  ?17.7.2 AddCdDialog 6274 N' q* [+ U' F+ {7 S" m& m
17.7.3 LogonDialog 629  M. s2 {7 n. [1 d
17.7.4 main.cpp 630! M' k+ ~" R4 h6 _) x4 N& _! t
17.8 小结 632# M4 Q. B6 G7 V3 y6 y" M* A3 E* @( q
2 _  y. i9 t6 ?( ~! E$ j0 G% X7 U* I
第18章 Linux标准 6334 ]0 k+ k0 T( a
, F: Z: K2 m. y& U3 N
18.1 C编程语言 634
- H- U& t+ l) e' s; `2 b1 g18.1.1 发展历史简介 634
1 t% c' {0 L) ?  R) M! s$ D18.1.2 GNU编译器集 634
/ O/ {1 t- j+ v+ X18.1.3 gcc选项 635
4 b6 E% u9 x5 i( E4 f' i6 s18.2 接口和LSB 636
3 }' d* d$ e$ u! z- x18.2.1 LSB标准函数库 637
# L& C9 v' }- X+ ]+ D' r18.2.2 LSB用户和组 6380 Z) U3 Q0 w( n: _9 ~
18.2.3 LSB系统初始化 6380 p7 Q+ @, b/ V+ S
18.3 文件系统层次结构标准 639
5 j7 Y: W% ?8 a! D18.4 更多标准 642; Z1 G3 c( q5 y! I' Z3 {% S3 v# w
18.5 小结 642
2 j6 ]/ n( O2 R7 L" R- [2 j
% \  e1 E. U! K/ N" W& {, u8 @) P2 D( _- }- Z8 E- E; j, b1 \& 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 | 显示全部楼层
看起来是不错啊5 z( W6 P, i7 j$ Q- z/ z
想知道小甲鱼最近在做啥?请访问 -> 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 16:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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