鱼C论坛

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

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

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

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

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

x
TB1SlhmMpXXXXX7XVXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg
3 u, D0 H, c% l9 R3 V7 r5 m3 l
* {- p" |: H! _  q6 F# c
书名:《Linux程序设计》
2 X. ?+ K1 Z! f& @, a, L作者:马修 (Neil Matthew),斯通斯 (Richard Stones)2 {/ ]/ l8 V' X+ c) B( T) ]. Z
译者:陈健,宋健建
6 ?7 o" g* I0 z5 H) U出版社:人民邮电出版社
7 F2 y0 J8 n+ [5 \出版年:2010年6月1日(第4版)5 F$ n4 R$ u, y; C0 o* [" d
定价:99.00元
8 ?5 A# y* ^$ @- u' ?装帧:平装
( r+ ]) [) d# f, w! p, ~* IISBN:9787115228215
  y7 T2 P% O1 x3 R8 y' _+ U1 e' ^$ H5 ~
购买链接:3 [( @+ S# d4 ~$ [; j( Y+ Y
3 e5 ]6 b2 S' I$ W

% z0 m8 F, E$ C  n+ B
亚马逊(Kindle)-> 传送门* _5 b9 E8 J- q) p! x! U
4 T$ e! R! U" V8 m" A
亚马逊 -> 传送门
7 N) D6 |, \% k4 H: j+ s0 |# a9 a" `5 b9 N$ E* t# V; S) O0 n5 r* u
当当网 -> 传送门
& g) |' x# |6 }% j& h1 K$ e; R) t  l+ `9 _! V7 }
京东 -> 传送门8 U3 p6 U+ h2 m) n& x
8 k" p6 p, }7 y; g) L* o
天猫 -> 传送门4 I: R8 o- ^" s0 K
. t3 _5 X( K5 m3 E

2 N, }  ^+ g" ^7 v2 d* Q, r内容简介:
& [: m2 i6 _, r  z- T" v$ p: o, a5 e) m  o

* ]/ i. d; h% `$ ^- Y5 j8 k
《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。
& r" u7 n/ B* c; g' H& b& E2 d0 z! n5 B( B& R: m/ [4 o2 u: w" k
《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。
1 k- k3 X) N  O  G
* a# M9 q4 k* F6 Z% }* J) u4 q( `  j0 X) j7 `# h
目录:
0 m; w/ l2 M7 X- e9 M) V% o; p1 ~! H/ {

; u8 j# r, h. z( X1 I
第1章 入门 13 `! K2 a1 L% O. Q( I& j1 q
7 H3 u5 ?% [4 [/ U+ O/ O
1.1 UNIX、Linux和GNU简介 16 C5 B% W9 B- k! F, C
1.1.1 什么是UNIX 1) K4 r" G4 ~$ A6 ?  U
1.1.2 什么是Linux 2" q* S* {; u) a; p& S
1.1.3 GNU项目和自由软件基金会 3, b. d6 [" Z" J" H6 r* G
1.1.4 Linux发行版 3
1 b  q9 n4 I  m; f1.2 Linux程序设计 4
/ h6 c9 ~5 ], K: T1.2.1 Linux程序 4
- v/ H3 f9 X7 _7 E% Q1.2.2 文本编辑器 5
6 m( U& s0 X7 y/ x2 X; s, C1.2.3 C语言编译器 5  r/ w, L" o+ q& o" v& N
1.2.4 开发系统导引 7( L  N% Y7 W# h) z* ~8 F
1.3 获得帮助 12
  Q1 E" w: J' L6 J( B) z1 @1.4 小结 14
0 l8 g# w( h+ b9 S
* w5 n) Q7 \" p5 @+ S第2章 shell程序设计 152 {* V+ W# k& Q( a  ]
1 W$ {4 U- `9 E/ d8 C8 s2 Q  \
2.1 为什么使用shell编程 15+ n5 ^1 w# D, e
2.2 一点哲学 16
  _. ]/ V) b2 N. j* T! X+ g; K6 s2.3 什么是shell 16
! w8 O9 a; n5 u, g: [0 |2.4 管道和重定向 18
$ ?5 k7 i% J# ~+ x2.4.1 重定向输出 18( s3 z9 C4 ?8 _3 C, t7 Z
2.4.2 重定向输入 19, x  w4 W3 l5 W6 E& T
2.4.3 管道 198 R" i9 U, P2 {7 g) A3 k4 h
2.5 作为程序设计语言的shell 20
. _6 h  O5 d# N* w9 [$ B7 V2.5.1 交互式程序 207 e% s8 q; S" W/ k
2.5.2 创建脚本 21! z# ^; J6 L" R2 t& ^
2.5.3 把脚本设置为可执行 22: R4 P6 F9 m' p( }5 ]& @
2.6 shell的语法 23. i- s1 g* ~  h: H6 m! Z
2.6.1 变量 23+ w8 l0 y/ T3 x
2.6.2 条件 27$ ~4 a. r; B$ L4 V+ o5 I$ U
2.6.3 控制结构 29, h1 y/ W8 h; F/ Y) z2 a
2.6.4 函数 392 t) E# {  |; H# _9 U, h
2.6.5 命令 42) a' y) S' s4 j' Y; O6 x' _
2.6.6 命令的执行 58- R4 r# ], w- z/ F' k# L" W: l
2.6.7 here文档 61. \0 a/ c2 v9 P& U
2.6.8 调试脚本程序 63
- s  s8 U) y6 E. r5 `2.7 迈向图形化:dialog工具 63, U3 ]  n% D- D! n7 A/ `
2.8 综合应用 680 F1 j/ A' g1 o  b
2.8.1 需求 68
% G, j7 F  a/ K; w- N# j% N5 C2.8.2 设计 68
/ i  P3 N1 n. u7 Q! s! P8 X; ~2.8.3 应用程序的说明 76
7 T9 x6 ^% f6 o. l0 h, k7 X# A2.9 小结 77
$ k' _6 d" b/ d/ E" V; u( Q ' r4 Z3 v; I2 I: I: V+ `) }
第3章 文件操作 78
  R# S3 ]; v/ n4 O
% ~5 F( K0 w3 ]$ ]8 g0 i' m# ~3.1 Linux文件结构 784 r4 o6 G. @- R; L- O1 v
3.1.1 目录 79
4 ~+ t5 T- Y  ?8 L' G! ]$ [  f0 \3.1.2 文件和设备 79
  v3 Y, P4 x; ?3 u3.2 系统调用和设备驱动程序 80
/ u; D8 A0 Y; k, E. v3.3 库函数 81; {1 T: ~7 R. `
3.4 底层文件访问 82% F8 L* h4 T2 Y3 [0 S
3.4.1 write系统调用 82( R6 u5 E# ^, E% A: E. `
3.4.2 read系统调用 83
; C6 d5 R, b. w' P# h2 s3.4.3 open系统调用 84. L+ F( u6 A0 I' i& L
3.4.4 访问权限的初始值 85
# G: o; T9 t* b4 A$ }; P3.4.5 其他与文件管理有关的系统调用 88& E' n3 K, \" n3 @# k9 y
3.5 标准I/O库 91
8 q" k) c7 k$ }8 P: ]& s7 y& x3.5.1 fopen函数 91
/ Z  |4 H2 r9 @$ Z8 N3.5.2 fread函数 92& v7 @. u3 w) H1 G
3.5.3 fwrite函数 922 v5 L8 _5 i) F0 a9 E
3.5.4 fclose函数 92  n# B1 a) I% \* R5 ]  L
3.5.5 fflush函数 93" g0 i, J* |& X0 I" \5 n1 y, F
3.5.6 fseek函数 93  o+ h9 H8 }7 U1 M4 A! N( q" H
3.5.7 fgetc、getc和getchar函数 93
: t" _; M# P/ M4 n3.5.8 fputc、putc和putchar函数 94' M, t' y: @- c- z# g  \1 k$ S, f
3.5.9 fgets和gets函数 945 h# m6 x1 e7 j  t1 h; X3 P: g
3.6 格式化输入和输出 94
' d2 R0 e: n2 _5 q5 r, y3.6.1 printf、fprintf和sprintf函数 94
- _5 t$ J: x) G% d$ v. \3.6.2 scanf、fscanf和sscanf函数 967 p2 }4 E8 p: Y  T2 p- N- D! ^
3.6.3 其他流函数 98* c4 z8 p3 Z9 Y1 G, X. R
3.6.4 文件流错误 99
& ]- p& a/ R# C& g8 `% v& V3.6.5 文件流和文件描述符 99% k& S$ ~; P1 }0 W7 t
3.7 文件和目录的维护 100% s0 S, h" A4 n  e# l
3.7.1 chmod系统调用 100
" |: G+ ~- l' n6 R2 q3.7.2 chown系统调用 100
/ d& D# _% }/ Z! T3.7.3 unlink、link和symlink系统调用 100% [4 r$ y+ u; l7 k6 M
3.7.4 mkdir和rmdir系统调用 101
0 D% D8 P( @3 @/ H* \$ m) A3 N3.7.5 chdir系统调用和getcwd函数 101
* V6 v# [2 ?! [" L' w/ V! Z3.8 扫描目录 102) t4 l/ s5 j/ ]. s; u7 I* ]
3.8.1 opendir函数 102
4 j/ N1 j; I2 m& ~2 ?2 q& w3.8.2 readdir函数 102( z; @7 p* ^: r
3.8.3 telldir函数 103
* W, e) X, v& k7 H3.8.4 seekdir函数 103$ {, d) q" ]' T' Q0 O5 }0 Q
3.8.5 closedir函数 1038 I: s& Z- \% r. |) Z3 r
3.9 错误处理 106. c) ?7 ?$ y( p2 n" o1 j
3.9.1 strerror函数 106
1 a; t4 M0 S, R- ]3.9.2 perror函数 106
, m. f# [5 ?! k7 v4 [3.10 /proc文件系统 107
, J# b8 p4 J8 [9 F8 T* ]; O% }3.11 高级主题:fcntl和mmap 110
; @" R6 h0 O$ G5 A3.11.1 fcntl系统调用 110; b( o: k- Y$ _) {
3.11.2 mmap函数 111/ ?7 @- ~6 m3 a  u2 d* `
3.12 小结 113
2 x/ P9 g. s, r; m  Z+ J3 L9 Z" u' ^! k' W! b
第4章 Linux环境 114
( M- Z$ q. L/ }3 M' W
8 b4 t& D/ l5 V  L4.1 程序参数 114/ \' }2 T# [+ \8 k
4.1.1 getopt 116) z* J6 Y( c1 o
4.1.2 getopt_long 118
8 e/ t; U' _4 S6 W8 K4.2 环境变量 120% B- L% ~+ M" l0 R
4.2.1 环境变量的用途 122
* ?1 H. G2 V3 x: R0 U/ ?$ a4 V4.2.2 environ变量 122
0 U) f0 s/ U2 z4.3 时间和日期 123# G7 [% H3 {9 Q' q/ g( v
4.4 临时文件 129" |0 U: S3 p, u1 e! [
4.5 用户信息 131$ q" M1 D# T$ K: f5 I$ f0 d
4.6 主机信息 134
; m9 G! f6 T9 n. d4.7 日志 135- n' r. S9 R- J; X. l
4.8 资源和限制 139" w' \$ ]7 Y5 }
4.9 小结 143& A$ ~/ b6 V9 N
# F/ d7 W  X& H; [( T& W
第5章 终端 144
3 A+ R- v; ~( t& K8 u; Q
) s1 D" s  f2 u$ M4 V9 Z) Y" G  q5.1 对终端进行读写 144* y- G, ^; h) d; E" x) d7 x! X
5.2 与终端进行对话 1490 x$ e! @/ [* R# M4 c5 O
5.3 终端驱动程序和通用终端接口 151
0 o. s8 a, @! e. P7 S6 _4 w5.3.1 概述 151
7 L+ Y  O$ C5 o5.3.2 硬件模型 1518 T1 c/ b8 O8 I" s( B; E7 T5 \
5.4 termios结构 152
  L; x7 k2 j4 y- i$ }" Y5.4.1 输入模式 153
( S( w6 g  q% E8 @+ K/ g5.4.2 输出模式 154
1 e6 b; ?( Z) Y& c) c/ D1 A+ O5.4.3 控制模式 155- m! I4 `' V/ k) V
5.4.4 本地模式 155
: m( u& h' G; K! A2 J' J$ ?5.4.5 特殊控制字符 1554 G) e3 \) a8 v: m$ W; Q8 x" W
5.4.6 终端速度 158* J8 S& X& {* |
5.4.7 其他函数 1591 q" l5 d) I1 B" }. r7 L
5.5 终端的输出 162
3 D# j7 Y! f+ i+ t% E: J5.5.1 终端的类型 163
! o& \! p- n" W3 Y7 q4 P! S5.5.2 识别终端类型 163
" F" l* V7 m4 L- s3 D& R; i0 w5.5.3 使用terminfo功能标志 1654 ~* q6 I; H  l/ v
5.6 检测击键动作 170* t0 `& F( s$ k6 w
5.7 虚拟控制台 1727 \  ^6 J( x& L5 o, T  W
5.8 伪终端 173# B! _4 P# J$ i/ H! {+ I, @
5.9 小结 174# R4 E+ W4 y& ?& a9 f! o! S

( l2 n/ s$ Y' A6 S第6章 使用curses函数库管理基于文本的屏幕 175
; j/ j6 S1 g$ k+ d$ G$ r; p# a1 I* {$ s
6.1 用curses函数库进行编译 175
/ |3 J6 b* i! ~, o0 d+ |, {- X6.2 curses术语和概念 176( }) s4 N1 q& z, C' r2 f! J
6.3 屏幕 178
3 t/ l0 Y4 x8 q, n" W6.3.1 输出到屏幕 179
. k" @7 g( F1 K. ~! W* C9 U' K( ]: o6.3.2 从屏幕读取 180
, d' s/ l* I5 h1 \0 I6.3.3 清除屏幕 180: Y9 F* Z# Q6 v6 o. |* j) u3 B
6.3.4 移动光标 180* x' s( G$ T* s% x3 V0 w
6.3.5 字符属性 181
0 j/ V' y3 C  N6.4 键盘 183) \1 o: R0 i. W0 t9 p5 k" F
6.4.1 键盘模式 183( b. L* v4 B1 S* S- R# P' h4 J
6.4.2 键盘输入 184
# g6 H+ @/ m" G: g3 X! X' ]. K6.5 窗口 185
( u6 T$ X& L/ d8 T) P- E9 w+ g6.5.1 WINDOW结构 1858 W/ g6 A; O# S* x
6.5.2 通用函数 186
: e6 ^- }4 r2 `2 I% ~6.5.3 移动和更新窗口 187% d7 J. ?' b5 p0 ^2 R4 O5 [
6.5.4 优化屏幕刷新 190
0 l$ N9 N) I' j5 b2 h6.6 子窗口 1917 b, I% g3 h& E$ g& }/ @; E
6.7 keypad模式 1936 S5 A! v4 D& h4 j- C; K
6.8 彩色显示 1950 }" n" }5 a8 G
6.9 pad 198+ e9 P) P6 R7 U( d0 `0 P, j& i
6.10 CD唱片应用程序 200- |# ?6 {6 ^8 F
6.10.1 新CD唱片应用程序的开始部分 2001 I; N0 j5 _) v' L2 ?+ j
6.10.2 main函数 202' A# ~/ |: @5 t$ L- F
6.10.3 建立菜单 203
0 w8 q' Y0 q6 D- o6.10.4 操作数据库文件 204; s1 p9 i3 ]. q1 I, R; C3 Y
6.10.5 查询CD数据库 2096 H4 s7 ~, {- S8 j8 }  {; g
6.11 小结 213
/ {8 k; o7 s  W" E0 w
7 w* Z* b  p: \第7章 数据管理 214: L3 s' t/ |- O( r4 p

: O/ ]% @9 ], v- w' r8 p7.1 内存管理 214' C- n& L1 T& e  G- ^/ N; c( n8 B( I
7.1.1 简单的内存分配 214
; i, P  g/ x% p7.1.2 分配大量的内存 215
5 X5 E0 A: v6 ?+ I7 Q  p( H7.1.3 滥用内存 218
. h0 ?2 g0 \5 \: B4 }9 K$ o+ g* e7.1.4 空指针 2197 b* F! \: g2 q% |2 q
7.1.5 释放内存 220& v6 d( `/ F' t( Y! Y" \
7.1.6 其他内存分配函数 221" a- i+ Y; s  [, [* u/ p* R. \
7.2 文件锁定 2226 G% h( S' w; E: z' u
7.2.1 创建锁文件 222: b) t) z4 n; D  z+ G2 O
7.2.2 区域锁定 2251 `. {/ a! i* e+ D5 Z, h+ o! ?& i
7.2.3 锁定状态下的读写操作 227) t  J) m+ p" n1 {
7.2.4 文件锁的竞争 232+ E) E: o- X* j8 y2 J- N
7.2.5 其他锁命令 236
1 H5 L) S& y8 E  e$ s2 `& E7.2.6 死锁 2360 X; L, e  @. b2 _$ Y& y* t4 Q
7.3 数据库 237
5 A. o) o7 _, o- \7 V3 X9 u$ s5 Q( ~7.3.1 dbm数据库 237
. N  Z5 e$ i' \7.3.2 dbm例程 238
5 a& p2 k- o; E# b5 L# {7.3.3 dbm访问函数 239+ n  h/ [/ |0 \. Z& l
7.3.4 其他dbm函数 242" y6 X( ?9 k5 a
7.4 CD唱片应用程序 244
) F$ H/ j/ ^  F2 t7.4.1 更新设计 2446 G$ v3 v2 x7 f/ j3 ~
7.4.2 使用dbm数据库的CD唱片应用程序 245
2 y  b$ o9 w- J  u4 |4 H/ P7.5 小结 262
( _; u, ^% \2 }) n, a  ^8 l! Y3 K% x; ?
第8章 MySQL 263
& t4 C+ }9 q# o4 c6 g. D; t: A; a; v) M' ?7 R  ^
8.1 安装 263, h  X# u9 d4 }2 d5 `- r
8.1.1 MySQL软件包 264
9 w% I5 }3 V* @% P: v4 J8.1.2 安装后的配置 266
6 ~3 o* D! U9 `, m  J0 E8.1.3 安装后的故障修复 270
! ~; h+ _3 h5 R' c8 r/ T. J$ U) s8.2 MySQL管理 270% u+ Z0 ]1 ^' f4 H, y* C
8.2.1 命令 270
& J  {3 T' q. }6 [0 N/ T8.2.2 创建用户并赋予权限 274
; J) }! F! T' C6 _6 J2 A1 Q8.2.3 密码 2767 R1 B, P0 z8 i' ^4 @( l- R( e
8.2.4 创建数据库 2761 ?8 x: [& X3 S0 `' |
8.2.5 数据类型 277% B0 M5 z( k3 m' a+ d! g& _- D
8.2.6 创建表 278
' P. N' ^" j. L* r+ G8.2.7 图形化工具 280! O; r6 X- ~# {) p; g
8.3 使用C语言访问MySQL数据 283
8 h  c/ Z/ [2 I2 H8.3.1 连接例程 283
' E3 M8 w( s7 M+ j- ]0 `8.3.2 错误处理 287: M% g* y7 B% _9 S5 U' f$ S
8.3.3 执行SQL语句 288
& E. D5 _/ G8 }, r. D+ q1 M8.3.4 更多的函数 301
# ^, [8 G* l' C9 J- P7 \, f8.4 CD数据库应用程序 301
% X8 P  p$ K. c0 I7 n8.4.1 创建表 302
3 i+ @# O8 ?4 w" F. K7 I5 `8 F# w8.4.2 添加数据 304. _+ n" L2 F' H1 g) H
8.4.3 使用C语言访问数据 3065 V3 D& l7 E& A
8.5 小结 316
; u$ t; y6 q1 E- j  ^' D
) O: @% I# j" m" G; x  E( q第9章 开发工具 317) `- W' p5 O* G1 g5 N5 `5 {6 m

( x2 O  S5 `# s1 L9.1 多个源文件带来的问题 317* E; L1 i2 h- ^" z/ V/ z
9.2 make命令和makefile文件 318
. x- F+ Z* o$ U9.2.1 makefile的语法 318
. a) z' F4 r& h' S7 l9.2.2 make命令的选项和参数 318
$ z* m' e$ y# c. j+ T- s( J- X0 K9.2.3 makefile文件中的注释 321; |8 t! j; F1 h) b0 {$ \2 u
9.2.4 makefile文件中的宏 3219 E. S5 Z9 h1 O5 ^' Z
9.2.5 多个目标 3237 K  b( [# F- z9 h$ o4 c5 `" n
9.2.6 内置规则 325
* S& d, R/ d! h; P: |9.2.7 后缀和模式规则 326# g6 i+ ~0 ]. Q+ R/ e# |
9.2.8 用make管理函数库 327: w1 \, l; O# e5 y2 `+ D/ k  p% v, _7 |
9.2.9 高级主题:makefile文件和子目录 329
( o5 n; }+ X8 r9.2.10 GNU make和gcc 329
( g- c% @9 Y  y" [4 ?9.3 源代码控制 3303 J% ?6 |) v( Q) R8 u. N
9.3.1 RCS 331
; L$ p4 a, U& w$ r) q( H& O2 P9.3.2 SCCS 3362 q$ k- R& c, w
9.3.3 RCS和SCCS的比较 3360 s9 g" ^* f6 p8 }
9.3.4 CVS 337
0 j) A" N1 A# o+ y9.3.5 CVS的前端程序 340: l1 @6 Z6 Z3 W& [
9.3.6 Subversion 341* F0 ^+ }' P0 E- j) b, I/ f- Q
9.4 编写手册页 342
5 V0 `4 n. K2 L  B9.5 发行软件 345
3 {9 Z; c4 a# D. X+ \9.5.1 patch程序 3451 w$ |( C% Y$ G, F. z$ c
9.5.2 其他软件发行工具 347
0 o( W, F/ v2 |5 |& y: R1 Q. K: U: F- ~+ R9.6 RPM软件包 349: w0 w5 z; X3 v$ w& |& G: E
9.6.1 使用RPM软件包文件 3491 e& z8 y! M% \9 z2 {7 X
9.6.2 安装RPM软件包 350
  y+ B; E/ v: ^- |9.6.3 创建RPM软件包 350
9 P1 n4 A; h$ V$ @! H8 e4 {9.7 其他软件包格式 358
# d3 ^. P' l% I  L! J4 _9.8 开发环境 358* y" O, t# m2 h% B
9.8.1 KDevelop 358
5 P( o4 R+ p* Z7 \1 i8 Q9.8.2 其他开发环境 360! V) D4 ^9 y* U* O
9.9 小结 360
9 N$ Q8 L5 A8 `
- C" v! U, w* z5 `第10章 调试 3613 j- o% I4 y8 V- }# Z

* t$ k* {& y, r2 `3 K10.1 错误类型 361
' p( a6 B0 o! Y1 U" |7 }10.2 常用调试技巧 362+ K$ j7 Y. e" J" c3 u
10.2.1 有漏洞的程序 362
0 `' M+ G/ k2 P7 D& [  p10.2.2 代码检查 364" e$ O; ?# N: h) ]* p5 O) |
10.2.3 取样法 365
2 ~3 Q8 e% e7 A2 n+ C' |10.2.4 程序的受控执行 367
+ |. l6 s9 d2 f6 f: S8 g10.3 使用gdb进行调试 3689 e' t7 ]9 @; A/ j/ n$ n
10.3.1 启动gdb 368
7 G1 q, x: o1 u( V: k; a7 I: I& e10.3.2 运行一个程序 369
9 H9 O2 I8 G- b& ?10.3.3 栈跟踪 369
) ~. w4 f6 u; ]10.3.4 检查变量 370
) `2 c% B0 W: n, W/ @. D- ~10.3.5 列出程序源代码 370
3 o  v+ ^1 m8 A' L10.3.6 设置断点 371; \' P" o: e5 b7 h6 Y
10.3.7 用调试器打补丁 374: \/ Q! Y4 [% K2 `# P+ t; [1 x0 Q
10.3.8 深入学习gdb 375' C% s: ?. H% {3 y, Z/ U
10.4 其他调试工具 375
1 W) z! C" G8 d6 u3 W5 D" y. I* V& s10.4.1 lint:清理程序中的“垃圾” 376
$ E7 l% [1 R9 g7 ]! f/ H: ]$ y. a/ g10.4.2 函数调用工具 378
/ Y5 u3 y- @6 h10.4.3 用prof/gprof产生执行存档 3806 o; T2 x! K8 c2 W4 Y3 K; Z# E
10.5 断言 381- e% z( J9 l. b# Z
10.6 内存调试 383
8 N' w: I. l- e4 T10.6.1 ElectricFence函数库 383! b# E! ^/ S! Q' A
10.6.2 valgrind 3842 ]3 r; s6 z5 i/ ]
10.7 小结 387
8 P! t$ c2 ^2 D: X
2 L8 e6 `% g( a; A, d% H+ e8 N/ ?第11章 进程和信号 388
' c: C  z0 D  n" A% D" y+ e. y% y. n* i/ N
11.1 什么是进程 388
8 W/ e, o- U" r/ J$ j& v- m11.2 进程的结构 388
' N+ ]  `+ ]9 a3 V1 `' }1 Y11.2.1 进程表 390: A7 }$ [# k( ^) M
11.2.2 查看进程 390) p! ^- z2 e, T- o
11.2.3 系统进程 391# l. Y3 W$ Y! O. _9 m9 J
11.2.4 进程调度 3932 a4 \1 w+ l8 B+ |7 ?0 U
11.3 启动新进程 3941 @8 v" k" P8 t# y
11.3.1 等待一个进程 3998 D- }% \% }% m* I# c5 Y2 Z
11.3.2 僵尸进程 401
9 o; S/ Y% \* q, {11.3.3 输入和输出重定向 403+ W' r. \: v' b& J
11.3.4 线程 404
+ m" P9 R6 y4 e  E8 b5 L11.4 信号 404# M0 k+ A  {8 d6 }; ?. T
11.4.1 发送信号 4084 f/ t- f9 X! h' B% t0 E( t
11.4.2 信号集 412
; {; y; z; ]: f. Z# ^/ c& d11.5 小结 415: ^! y1 L; ^$ n/ ~5 l
, C# ~# F8 |; c; i
第12章 POSIX线程 416
' @+ n% R8 ]1 p( f. \' O2 B. S/ O3 s  m+ O$ A: F, }
12.1 什么是线程 416
; |2 n  R1 t* [  O, _0 `12.2 线程的优点和缺点 417
7 V- }3 Q. w9 _9 M7 n* k9 X12.3 第一个线程程序 418; t8 P! f8 z) ^0 U4 X0 Y
12.4 同时执行 421
. v; Q& _; L8 D12.5 同步 423
- o! K) }, E. F8 @. H2 _# v% y12.5.1 用信号量进行同步 423. Z6 o9 x3 e% B6 v/ [0 |
12.5.2 用互斥量进行同步 427
9 W1 `! }6 ]1 Z0 `, `, W2 A12.6 线程的属性 431& L1 G$ c0 c5 j: k7 g! c! |
12.7 取消一个线程 4359 [, a# q+ y: r5 o0 S
12.8 多线程 438
6 T( o1 z' G* R/ a% t) a7 i& Q12.9 小结 442/ V/ c, l. v: i: s7 \- M9 a8 J

" g$ R4 L$ G# ^0 D! r# Q第13章 进程间通信:管道 443
8 Q# g* I' i. C- S& H! y9 h) @1 j1 k" N& u# }+ ^" W7 r! U/ J
13.1 什么是管道 443
1 k( H7 v0 A; m& g& m13.2 进程管道 444/ x8 @; e' b: c2 ~
13.3 将输出送往popen 445
2 O" b6 H& F8 i2 e' J4 _3 j' ~13.3.1 传递更多的数据 446
" s/ ~+ h( g3 A13.3.2 如何实现popen 447
$ {, g5 }; f5 u- q! F13.4 pipe调用 449
/ {( s4 v( z* @, b5 \( M6 u0 }13.5 父进程和子进程 451/ M4 q9 m/ ]. T/ n3 m. R# X
13.5.1 管道关闭后的读操作 453  o4 A0 i3 M* U: n0 X1 O* [  E
13.5.2 把管道用作标准输入和标准输出 454( v7 |4 f: N+ \' Q4 T. I. T" ]4 T- L+ e
13.6 命名管道:FIFO 456
6 S% I3 `: r/ m# V13.6.1 访问FIFO文件 458
0 G1 r) J7 t5 H- l: a( H0 e; e13.6.2 高级主题:使用FIFO的客户/服务器应用程序 4646 B; \1 K6 i) b' J! O
13.7 CD数据库应用程序 468- H+ a! t/ l( @3 u' |! _+ h4 M9 ?
13.7.1 目标 4696 T3 ]' m1 F) y$ M
13.7.2 实现 469. b6 F* A+ L, n, e
13.7.3 客户接口函数 472/ |8 V* R5 D* ^% ?3 t
13.7.4 服务器接口server.c 478+ Y3 }2 }/ g9 S  S* `' x' b
13.7.5 管道 481$ j, Z! X5 v5 G7 s0 `
13.7.6 对CD数据库应用程序的总结 487
+ n; T+ G" _! N8 [13.8 小结 487
0 u% \" Y, }- E( p0 K  Q5 B
3 J9 I  A, N; G& o' `0 |7 b第14章 信号量、共享内存和消息队列 488
; e8 ~) m# w' a! _$ d; I9 e# G7 G' G' \" M' V2 M
14.1 信号量 4887 B( x% R  d6 Y; T
14.1.1 信号量的定义 489: S% F' p/ n; X$ t# q. R3 _
14.1.2 一个理论性的例子 489
2 h+ w& d+ m2 G( j9 X( v3 E14.1.3 Linux的信号量机制 490
" H0 y4 [5 h' ?* m; m  ]. y8 }14.1.4 使用信号量 492
3 f/ b' }6 p: D  B- s/ }* Q+ D1 M14.2 共享内存 496
6 b7 }% I, J  J# ~14.2.1 shmget函数 497" r% C( b6 E6 c. b% y
14.2.2 shmat函数 497
7 k& v. o6 R4 ^14.2.3 shmdt 498
+ R) }+ r$ v/ }; |, u14.2.4 shmctl 498
+ h  _2 Y0 ~% P8 ^$ O; t14.3 消息队列 5028 C3 P- D6 w. T* H/ R
14.3.1 msgget函数 502* g- d* B: o9 {0 W9 o
14.3.2 msgsnd函数 503
. C3 n6 S$ q3 L( q: M: n14.3.3 msgrcv函数 5039 {4 z: `( {% Y
14.3.4 msgctl函数 504  `5 r( s) c. j6 U. v
14.4 CD数据库应用程序 507
. ]& E, k& g8 T14.4.1 修改服务器函数 507
1 J9 q* ^& t7 M14.4.2 修改客户函数 509* P7 |5 b8 K3 d) T5 C  D
14.5 IPC状态命令 511
; ]+ F+ a! G* o, ~  v$ h14.5.1 显示信号量状态 511
" e: T& u' r# X14.5.2 显示共享内存状态 511
9 x" [% F1 l7 M+ m, K14.5.3 显示消息队列状态 511
: [. P" ~. S0 {2 Y8 q14.6 小结 5128 B# d1 x( j" c6 O% z! P8 n

* ]7 ^! _% p9 w/ I& C  y; Y第15章 套接字 513! s9 S3 e- e7 ?" |+ Y; X

% ]1 D' k$ \7 J5 `15.1 什么是套接字 5135 I, d" i; x8 y: z) r5 N
15.2 套接字连接 513* L: ~: s8 a: P1 R* D5 N
15.2.1 套接字属性 517
/ a. W8 }% V/ q3 |, P# Z3 |2 w15.2.2 创建套接字 5198 u; g% h2 q) n9 S* J( i4 H
15.2.3 套接字地址 5204 V. X  G7 u+ Z
15.2.4 命名套接字 5205 I  T0 m+ [# w4 O
15.2.5 创建套接字队列 521
3 i5 @: b6 w& P+ z( K* [15.2.6 接受连接 521( C/ e* p7 N  y) n
15.2.7 请求连接 522" i: B% X' e5 K
15.2.8 关闭套接字 523
; V, i" u6 `1 d: C15.2.9 套接字通信 523+ X5 ^. O0 t$ A8 ?1 F
15.2.10 主机字节序和网络字节序 525
7 L6 y% _( _9 h& d  f, J! v15.3 网络信息 527
5 _5 g& o; D! e) X* C6 g. C15.3.1 因特网守护进程(xinetd/inetd) 531
* Q9 r; W( y* W  w9 b8 `15.3.2 套接字选项 5338 l# N2 P4 O8 T, Y1 L+ |6 Y' J
15.4 多客户 534
) `$ q1 Y' _! ]3 B: Q5 |15.4.1 select系统调用 537' W/ z2 r# p+ W; F9 Q* Z
15.4.2 多客户 540
7 S4 G! m# r: E2 R0 H( J( q8 ?/ q15.5 数据报 543
: Q' m2 j& t+ B: M15.6 小结 545" B3 h& I, j# `& n9 q" E/ D' Y# F# c

2 e. [( ]3 E- _/ H# q第16章 用GTK+进行GNOME编程 5465 Z; e" ~( `9 z

4 f) E- o' H+ P, _6 d16.1 X视窗系统简介 546$ N( x; w, d: ?) D3 I
16.1.1 X服务器 547
8 E4 D' o' L9 p8 z16.1.2 X客户端 547" N' u- T9 V7 i' e
16.1.3 X协议 5473 T% C" I; P6 D: z/ B" U, s
16.1.4 Xlib库 547+ [6 _; C0 `2 O* @
16.1.5 X工具包 547
) b( o9 P4 r0 |1 @2 C16.1.6 窗口管理器 548% _9 W! I, H$ R, U( ~  i5 R
16.1.7 创建GUI的其他方法——平台无关的窗囗API 548* ^/ l: C5 R: n6 g
16.2 GTK+简介 549
4 X# h3 f3 T" L4 R16.2.1 GLib类型系统 549! _* j, J& H0 h% q
16.2.2 GTK+对象系统 550' B) k3 |, `$ _. c, t
16.2.3 GNOME简介 550; o* N: a( y3 @6 V' K, {
16.2.4 安装GNOME/GTK+开发库 5515 |* Y* H$ `# Y2 }
16.3 事件、信号和回调函数 554
. Y9 d6 n: v& ]' S* f6 V/ t3 F9 G16.4 组装盒构件 5568 J; X! j- F' r  H$ p+ }' c
16.5 GTK+构件 559
" e+ M2 V! `+ I) C, B* u3 c16.5.1 GtkWindow 559/ X+ n( e6 d+ P4 k
16.5.2 GtkEntry 560; Z7 Y+ a9 j  @2 [& x7 {* ~+ r
16.5.3 GtkSpinButton 563
/ P, j6 v* n' ]; s: P- Y1 s( W16.5.4 GtkButton 565
) \4 \- O* O) x2 @$ y( Y16.5.5 GtkTreeView 5680 J& m% h1 `0 A" ]1 X7 @" @$ l+ E8 S
16.6 GNOME构件 571
! H* r. Z. E% P$ |: j16.7 GNOME菜单 572
* j; t9 c$ I* t/ O. k4 d16.8 对话框 576% D+ g4 n2 p$ `- D6 R% g' C7 }
16.8.1 GtkDialog 577
0 l5 |' M  U5 q/ I16.8.2 模式对话框 578: N- M' i& @! f& P* A9 U
16.8.3 非模式对话框 579) ]  X% H9 V& f0 d' x
16.8.4 GtkMessageDialog 5808 G% Y+ `( D! |" h0 e* g  j
16.9 CD数据库应用程序 581" j3 _# F$ }' D0 @% a
16.10 小结 592
0 }5 k5 a% Q9 t
: a# s+ a+ P6 D  v. y( C  _" V* _第17章 用Qt进行KDE编程 593  t% U+ ?& C6 e) ?  d3 a

1 P- L9 r  j/ F5 o; s1 p) |5 k17.1 KDE和Qt简介 593; s4 d$ P, Q' v  v
17.2 安装Qt 594! U# D& j+ Z2 S1 V' U- a
17.3 信号和槽 5960 W  a8 Z6 M( J5 j! X1 C
17.4 Qt构件 602/ ^! C8 P2 G7 z$ Z0 x/ k
17.4.1 QLineEdit 602
% A$ R) u7 @% G1 `5 j; {6 q$ ]! r17.4.2 Qt按钮 605
( y0 U* |: X/ Q) P4 N. Z17.4.3 QComboBox 609
* e) p- N/ J/ `& n5 A8 V17.4.4 QListView 613' J, M6 p4 Z2 W2 d
17.5 对话框 6159 B$ f" c4 \6 G6 o( z6 q0 l
17.5.1 QDialog 615
3 o2 Y6 w1 J8 `- P+ R+ h17.5.2 QMessageBox 6178 ?) N! I- _- f" y; O: \" R
17.5.3 QInputDialog 6180 Y6 b0 e/ ^' m% y) Y# P0 B! H6 ]
17.5.4 使用qmake简化makefile文件的编写 620
% |( A; j0 [. o0 m. F17.6 KDE的菜单和工具栏 620
. x7 ^5 X* B+ X3 {0 u9 B- U  P# y5 e4 ?7 c17.7 使用KDE/Qt编写CD数据库应用程序 624' l( `. @5 @/ r7 S$ [: W3 n$ J) X
17.7.1 主窗口 6245 I6 @( ]3 T! n7 E$ v/ E" Z
17.7.2 AddCdDialog 6279 i: ]( @( i7 O& ]
17.7.3 LogonDialog 6295 `  f# |0 _3 ?2 ]9 Q* H
17.7.4 main.cpp 630
4 O( N0 Q  L/ ]% O8 Z17.8 小结 632
* Y: i7 Q$ }0 Q1 t9 h6 J8 @
2 r2 `- D! C9 j4 v第18章 Linux标准 633
5 O. d4 }4 U! J% N6 K- h* v4 B1 A; G
18.1 C编程语言 634/ N( T7 T5 _  S& R3 D; D, n$ ?; G' I
18.1.1 发展历史简介 634
9 i% G/ K/ ~/ i18.1.2 GNU编译器集 634/ y& r& u3 D) s, u1 E/ K
18.1.3 gcc选项 6359 O/ s/ a5 T  l; J; d2 [8 R
18.2 接口和LSB 636
! N5 C. }8 Y0 \2 C18.2.1 LSB标准函数库 637# y2 B* B" a) K9 T8 u5 k
18.2.2 LSB用户和组 638
0 ?! Z' e3 m, w6 J7 X5 g1 b18.2.3 LSB系统初始化 638
, `/ S7 J& O/ l- i8 w18.3 文件系统层次结构标准 6399 P. K/ A  t+ X' X4 p0 n( {
18.4 更多标准 642
" U* V4 R3 O* p+ @" Y: j. ~) u' I18.5 小结 642" s  l% w3 X$ k; l1 [6 H- n0 ]  S
1 T! x+ @3 L4 U; s) T

- y" _  ~' Q' F; c$ S7 I

评分

参与人数 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 | 显示全部楼层
看起来是不错啊
8 `9 @$ X, v# L& H& [
想知道小甲鱼最近在做啥?请访问 -> 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:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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