鱼C论坛

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

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

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

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

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

x
TB1SlhmMpXXXXX7XVXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg

5 W2 K/ e2 D$ N- j1 q" C1 }
! i. u  d5 v) O书名:《Linux程序设计》
2 y' B' p. `2 J2 w) C. z作者:马修 (Neil Matthew),斯通斯 (Richard Stones)& k, s, B* i7 X% U8 v) d& \! h
译者:陈健,宋健建
: H: R- _% y5 H8 s/ A! X出版社:人民邮电出版社( v8 Q* N0 \# z0 l7 k- a
出版年:2010年6月1日(第4版)/ O! U' Q2 y' B
定价:99.00元
3 W, K; }; j( H5 X) c+ E* i& w装帧:平装
" F8 o. y: }# Y) Q1 E9 M) B) LISBN:9787115228215
1 D/ U! Y& p3 L6 |
3 B8 i' I5 {2 c3 \6 B购买链接:/ i/ o+ r; B6 B! p$ a8 H

/ ?- h) v7 f2 e

. U# A" w+ t1 x亚马逊(Kindle)-> 传送门
+ ~0 H: W& x4 D( L& n
' }% I; _7 ~0 j( ^6 I& r亚马逊 -> 传送门' {5 S  Z6 ^& N5 R% c

4 U7 j) p3 h" K1 |; ?9 a, {; @当当网 -> 传送门) t* |2 u) U* w+ M% x

9 N# @6 ^5 m0 w% F, s) i京东 -> 传送门
4 B6 ~7 t3 H- _0 i1 r: s" _
: m3 _& ]' l5 {; x" }天猫 -> 传送门# T; Y% Q; t. M1 V6 u" r" G

, J" O1 j6 a/ C; K$ `' x+ q0 V4 ?& n+ S$ _) b, p0 q, ~' F
内容简介:
$ u( A1 N3 H0 v) B- `
! ~" ^, W9 P# f  V7 a5 U8 O

& ]" Z1 f# w, p  n% j' _/ F& o《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。6 h  A  \4 Q/ _6 g" ~& w, z
) y" L) J+ c8 D% o4 J
《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。
7 I0 R7 A- E- B# ]4 b8 |- l5 o6 T
; D; h* I3 ~4 K) {$ y  [
; R& z# C. C8 \: m4 f目录:% e0 u3 Z3 [3 G6 s3 f; b( w

: J0 X( F5 }; J+ j1 ?0 y. `
6 u9 H3 m& l0 d# T
第1章 入门 19 ~! ~  K$ N, t: G. t( N6 t" u
# o- J8 s* z' `, T/ m8 P4 M
1.1 UNIX、Linux和GNU简介 1
% I3 J! \$ X% t: `( N1 B7 p; V1.1.1 什么是UNIX 17 g5 y" a$ }1 O
1.1.2 什么是Linux 2& Q) _3 d+ ?" B! x$ m" Q: ~8 @
1.1.3 GNU项目和自由软件基金会 3
- I  {. U2 f8 L& H" p' ?+ q1.1.4 Linux发行版 3: E& j: Q! ]7 Z; V& g( F
1.2 Linux程序设计 44 [) P: H! Z9 e9 z
1.2.1 Linux程序 4$ R/ Y: b! @- ~
1.2.2 文本编辑器 5! S1 L% i( i3 }
1.2.3 C语言编译器 5  J& {7 ?$ O/ c$ T3 `0 X% u
1.2.4 开发系统导引 7" m" O9 L( }- n+ J2 V  m' P" k! L4 y
1.3 获得帮助 12
0 a( L# U0 Y6 q1.4 小结 14) j' n$ l; Q) ?: U7 {4 H

1 C; f- X2 |* f) z/ n& O第2章 shell程序设计 15" P: d. V9 L0 ]5 E* w
9 b& T" l* H/ K
2.1 为什么使用shell编程 15
: b' l" B: J& A5 E; v8 d; Y$ X, Z- L2.2 一点哲学 16, ], @" [  x& f( K1 v
2.3 什么是shell 162 g) M4 R; D& q( a5 o7 C
2.4 管道和重定向 18& Z9 |! ]# S# K
2.4.1 重定向输出 18
* [  Y3 O3 l- P2.4.2 重定向输入 19. u% k/ o* B* D6 H
2.4.3 管道 19
+ r! k" P" z: M: @# N. {; v. p- |7 A! L2.5 作为程序设计语言的shell 20$ x8 [0 `6 X' ]# E" r3 }+ g- J1 P0 Y
2.5.1 交互式程序 20
8 C, w  l) b3 f# v2.5.2 创建脚本 21
& J9 Q4 |% S8 F) v& j. H; h2.5.3 把脚本设置为可执行 22& X1 ~/ y) r& j$ U7 O. O  R
2.6 shell的语法 23  d; p0 @; F, ?& c  c4 |
2.6.1 变量 23! n  W) t$ c9 e/ X; X3 U  K( C: j
2.6.2 条件 27
' \/ y4 `4 I: D$ g/ d# g$ \' G2.6.3 控制结构 29
9 c! a* T# T/ ^  t$ Z2.6.4 函数 39. q; j9 U( B9 _: }+ T
2.6.5 命令 42
" T- U1 Z" T1 O2.6.6 命令的执行 582 r# E: ?" I1 T* q' z3 r
2.6.7 here文档 61
+ b& {9 b$ ~3 _7 T9 L7 s2.6.8 调试脚本程序 63
4 t) `( m, m9 m# Z  ]& l% W6 D& z2.7 迈向图形化:dialog工具 633 W" s* d8 q0 r( y
2.8 综合应用 68
9 p  X0 F& G; b8 M* t! V" L! }2.8.1 需求 68. R$ b/ ?6 p. f: a: k  C/ m
2.8.2 设计 68
9 K8 }5 \. g, X' G) m2.8.3 应用程序的说明 76* I: X' t7 l( R) b$ A
2.9 小结 77
: m8 b) q& R$ X# X) ] , K' w7 M* V) _  F8 [
第3章 文件操作 78
1 W. y' U; F- P4 g; A
2 e( J9 H5 t  w7 g9 ]3.1 Linux文件结构 78) ?+ M/ Q8 x9 l0 x, Z
3.1.1 目录 79
- T0 x/ ]( o6 ~- Y# T: r+ I1 w3.1.2 文件和设备 794 L7 s5 o% H. N) ^1 \
3.2 系统调用和设备驱动程序 803 X0 J" @- \3 C
3.3 库函数 818 |3 s: p- m+ g1 q6 U9 U3 X
3.4 底层文件访问 82# [% l3 O7 C, r6 O$ p- K4 ]
3.4.1 write系统调用 82
/ |+ Q! i' t4 h3 f* s' y. p3.4.2 read系统调用 83
' d( u, w% C0 I3.4.3 open系统调用 84
) j& u2 i. {( }* g4 Y3.4.4 访问权限的初始值 851 o) _6 Z7 K* {6 J  G' ?
3.4.5 其他与文件管理有关的系统调用 88% M+ ?  R; j9 \! O; P9 [5 X
3.5 标准I/O库 91
" P5 |9 X% `" n7 L( \8 |3.5.1 fopen函数 91
* i1 H. j: ?. v' N3.5.2 fread函数 92
- o# P2 _7 I8 h" l+ w  h7 R3.5.3 fwrite函数 92+ `7 n/ T9 n/ h) s& l4 L
3.5.4 fclose函数 924 `0 ^5 U- j+ t/ Q$ U0 s2 {
3.5.5 fflush函数 930 b- Q+ q* l7 E2 b; e. _& i
3.5.6 fseek函数 936 w4 z+ U  Z3 [, P) T4 y7 T
3.5.7 fgetc、getc和getchar函数 93
7 d9 u  |$ V5 C3.5.8 fputc、putc和putchar函数 94
; w( T8 O1 i/ C/ [3 q1 J9 ]3.5.9 fgets和gets函数 94- p6 l$ l/ U  p( s4 s  Y
3.6 格式化输入和输出 94
% @0 L, n3 o' I: v3.6.1 printf、fprintf和sprintf函数 94
8 x, `0 H* V  Q5 F0 g: C3.6.2 scanf、fscanf和sscanf函数 96
( s' T+ {  {/ S" y3 u; M3.6.3 其他流函数 98
+ r' Z) ?( v( W, `6 u5 c3.6.4 文件流错误 991 A# D! g( F( n' l9 L% p
3.6.5 文件流和文件描述符 998 f: T' d" G) Q, b6 d; {% U
3.7 文件和目录的维护 1007 W+ U- W1 c* t8 d' a; L. O
3.7.1 chmod系统调用 100
3 H+ M% k4 _# f1 H) @0 G9 X3.7.2 chown系统调用 100
7 s' v' K& W. V! U. Y9 {2 n! i3.7.3 unlink、link和symlink系统调用 100& j9 ?: {( A$ ~5 U8 X0 p
3.7.4 mkdir和rmdir系统调用 101
% K! L' g2 E* j! V% U6 M; e! ?3.7.5 chdir系统调用和getcwd函数 101
" ?! g  @4 D. c! i3.8 扫描目录 102. Z% {# _5 |9 ]: w3 b" G
3.8.1 opendir函数 102$ ~5 Z( D4 q( w6 W1 b
3.8.2 readdir函数 102* x9 C0 c; z! O0 o
3.8.3 telldir函数 103; ]5 y% d$ _2 W" G! ?! V8 e
3.8.4 seekdir函数 103
' D5 g6 J/ K' H2 z/ ?! [  l: @$ M3.8.5 closedir函数 103" O7 Q* H2 H: Z7 l% _
3.9 错误处理 106
+ h, d. n* @% o5 ?% _3.9.1 strerror函数 106
3 c' k% c; b8 o& K3.9.2 perror函数 1065 l$ f+ R3 }" o) i( i
3.10 /proc文件系统 107
4 Q! ?# F( V+ t2 Q3.11 高级主题:fcntl和mmap 1107 T& r; `$ [0 c5 `8 `+ r
3.11.1 fcntl系统调用 110
) O, |9 c. o  ~6 f3 w8 ?, W3.11.2 mmap函数 111& H8 q, V  z% ?3 a! N
3.12 小结 113
& |/ V% a" m' H& t# u$ U. d' L, n0 u) v- q
第4章 Linux环境 1143 x; Z  G0 v: i! n' n

( R+ H1 m& _% E/ X8 e" ^4.1 程序参数 1140 x. K0 P. e; y2 _" I; H
4.1.1 getopt 1164 \- {1 y4 i8 O( i% k; c* y- i
4.1.2 getopt_long 1182 _" D; S8 M  f8 K  k6 y! M
4.2 环境变量 120
  @$ S/ l. b5 n/ h- U- Z# `0 }* k! v4.2.1 环境变量的用途 122
) C: Y) l% _! o$ n- j1 q4.2.2 environ变量 122/ t3 g1 p2 m; r' B# V4 a
4.3 时间和日期 123
  N+ n+ K: E& f' N4.4 临时文件 129
# @) S: d# v1 |5 f+ g1 B4.5 用户信息 131
6 S) m/ B! d2 I2 [4.6 主机信息 134
. x3 z5 J5 ~' H) a8 ~4.7 日志 135
4 \+ s- I, _* g4.8 资源和限制 139: [8 {, _4 C) g+ L% y# t
4.9 小结 143
  ^6 E8 c" Z  f2 b
* |  S6 _' n8 L$ _: z7 o# b! f$ u第5章 终端 144
0 M8 H8 ?9 H, t; k7 w; f) N2 n' a" C$ a+ u" S; A8 l! i
5.1 对终端进行读写 1444 B5 O3 M. n% Z0 B/ ^" b3 k
5.2 与终端进行对话 149
0 b- {5 G7 H# f3 Y5.3 终端驱动程序和通用终端接口 151$ ^& b; W. X) N( M1 ^' m( K
5.3.1 概述 151! J. d- i, ~& L+ {% @7 m/ c0 y6 M
5.3.2 硬件模型 1512 Q9 k2 b1 ~, p  K+ I7 x
5.4 termios结构 152% j) S; {/ ?9 J) p
5.4.1 输入模式 153  x* z! W7 D  e: z" P7 d* m
5.4.2 输出模式 154
5 Z9 F2 M$ n. |2 H# N$ O, _5.4.3 控制模式 155+ o3 O( d# D# Q; x3 b4 L
5.4.4 本地模式 155& j3 E$ Q" f; O: a. @
5.4.5 特殊控制字符 155
4 E1 O, C' {: r7 i4 v! r! E5.4.6 终端速度 158
2 @" \5 G! y* h% L8 i, n3 Q; W5.4.7 其他函数 159
# k  y# `8 u5 u: |( R" S4 x: r5.5 终端的输出 162- u, }& M7 y/ p) u
5.5.1 终端的类型 163
6 b; U2 \" `; z  v: O3 x) T5.5.2 识别终端类型 163; M: i1 p% E7 }  {$ U
5.5.3 使用terminfo功能标志 165
( B9 t: i) d- L$ c. {) }/ L5.6 检测击键动作 170
. n+ l4 E! U* d/ l! }" i9 l5.7 虚拟控制台 172' l3 t8 _( D7 e7 N' c  f0 a6 e- C7 {; \
5.8 伪终端 173
. O) E: T. ?1 N# G# |) v# ]5.9 小结 1741 D# N8 b1 ?, ]$ h6 }
. G0 n2 n" P* o7 ~& I. j
第6章 使用curses函数库管理基于文本的屏幕 175
& |6 |9 x& l7 d5 r% I3 c  t- p& r4 T7 C% O0 s+ M, ^0 m2 @) I' q
6.1 用curses函数库进行编译 175" U9 u+ X9 S' {$ ]; o1 Z
6.2 curses术语和概念 176
, J: S2 p- O+ b; ?/ v8 e1 N) ^6.3 屏幕 178
# T3 j. `+ X$ e& S' i" f6.3.1 输出到屏幕 179
. H! D9 @# R4 `# e0 u6.3.2 从屏幕读取 180
4 Y& M& |& q, h) X" L6.3.3 清除屏幕 1806 Y0 y8 J( T+ `& @! b; o4 S% J
6.3.4 移动光标 180
, [  X! a6 C  z" q6.3.5 字符属性 181, Z4 c! ~  [1 z
6.4 键盘 183
: _  N% i( F7 i2 a5 X4 S8 x1 }6.4.1 键盘模式 1838 y0 k- p$ S; {1 m2 d# m
6.4.2 键盘输入 184
9 s* v( v0 }' v9 b+ b6.5 窗口 185
: ]5 G8 [2 E4 W0 j9 N2 d6.5.1 WINDOW结构 1852 v) e* P' n& t: F& U0 s5 h4 T% \! C+ U
6.5.2 通用函数 1869 ^6 p! s6 K0 z; w& N, X& a
6.5.3 移动和更新窗口 187
) b- |( ^6 y# `6.5.4 优化屏幕刷新 190
8 G+ J( y. [' o' \' Q6.6 子窗口 191
; S" S! w/ ?: V! e' Y; L) h- @: |6 ~% x6.7 keypad模式 1934 m' q, H& d3 `! G- U/ `
6.8 彩色显示 195* [% n& H1 t+ `. N) l7 L
6.9 pad 1988 x2 W: k: L! i1 E# |, [  g  z3 ?1 H: N
6.10 CD唱片应用程序 200
7 \% d9 A1 X& K! i6.10.1 新CD唱片应用程序的开始部分 200  h9 [  |  ?2 V+ e, o9 G
6.10.2 main函数 202
7 V! f7 ?2 a0 [1 V+ e5 Z" @4 t6.10.3 建立菜单 203
; ^0 v: Y8 K4 I& C/ o$ d5 r: `( [6.10.4 操作数据库文件 204
4 Z2 C/ z6 v& G2 o4 Q' k' I* v6.10.5 查询CD数据库 209! F! n  a+ I9 H3 k
6.11 小结 213
% L* O" ~. G2 R# W4 `  r( j+ x
/ v+ j/ t4 u6 J* w% H/ ~第7章 数据管理 214
$ t" A1 [! z# O3 b2 b- T1 h0 f5 H# n) T# ^4 n- _
7.1 内存管理 214
" P" m- @( c" r  F3 ^  l' j7.1.1 简单的内存分配 214" I2 b& m8 J  b
7.1.2 分配大量的内存 2155 c4 M% }% R, a0 w: P) H5 @
7.1.3 滥用内存 218
0 ^! \& n. A% E* u1 V; ^7.1.4 空指针 219
( S7 g, o) E8 K- G- T/ e* I7 k7.1.5 释放内存 220
6 |5 f9 o; ], b3 a; A7.1.6 其他内存分配函数 221) Q1 J, D' Q) r  b; T' D, D: {
7.2 文件锁定 2221 L! S+ ]% B/ [8 U0 p
7.2.1 创建锁文件 222" X4 q5 Y9 X' U! C; G# B) W9 G
7.2.2 区域锁定 225& p' v& J0 E! Q  |- N% B
7.2.3 锁定状态下的读写操作 227; E8 o0 Q+ p. Q7 \1 P, b
7.2.4 文件锁的竞争 232
- K- _( g" F8 S# U# o7.2.5 其他锁命令 236
% H/ u8 G9 b: p, A7.2.6 死锁 236# b3 K. M% M! p
7.3 数据库 237, Q$ p6 O4 m: }1 Q: D9 X- Q
7.3.1 dbm数据库 2375 J' u4 D$ P8 l% |  K+ s) F
7.3.2 dbm例程 238
) i8 {8 u# s4 N- ]) ]" N! O7.3.3 dbm访问函数 2396 N- U* I- I5 }
7.3.4 其他dbm函数 242, ]- Y: T! C: {3 A* `
7.4 CD唱片应用程序 244
5 }1 Q3 d3 e+ K7.4.1 更新设计 244& O* _% \0 {% F( |" A
7.4.2 使用dbm数据库的CD唱片应用程序 245: t8 b1 s7 L* U* O  m9 T) F5 O+ k
7.5 小结 262; E" ~; D( o3 C7 _
+ Y; F9 l1 n( n
第8章 MySQL 263
8 W/ i4 A0 @, k& B/ W* D! j0 d+ n( _
8.1 安装 2633 p8 p1 l6 R! S  K
8.1.1 MySQL软件包 264
4 T" C9 @0 i7 W8.1.2 安装后的配置 266# G# D* C2 ]) Q
8.1.3 安装后的故障修复 270
" N$ |! T2 t: d! z. X4 x* m8.2 MySQL管理 270
% `* P! \' p, r" v8.2.1 命令 270
2 ~  J0 x  Q: ^2 }4 q# ~0 A8.2.2 创建用户并赋予权限 2747 y! Y9 h' K$ t7 J: X! V
8.2.3 密码 276
7 j, I/ w/ e: u) `7 L4 `2 ^. Y8.2.4 创建数据库 276: U; F1 F0 I0 U, G' T  H1 O" X
8.2.5 数据类型 2776 Q1 x; l& O  u! |2 z( x0 f
8.2.6 创建表 2785 a+ T. w/ B6 r4 R8 ^- e# D
8.2.7 图形化工具 280* T8 e% _; U( I8 o" N
8.3 使用C语言访问MySQL数据 2834 l$ w$ N3 ]2 N( K
8.3.1 连接例程 2833 F0 v) f+ U' Z$ d; F2 C0 o) i: }; m
8.3.2 错误处理 287. g5 E. i5 u. b9 W& Y
8.3.3 执行SQL语句 288- m0 W' q1 F) `2 Q  F8 W
8.3.4 更多的函数 301
+ |6 k  _4 ]) q8.4 CD数据库应用程序 301
2 ?9 x2 V: I6 ^, S- ^# P8.4.1 创建表 302* U" r6 b/ ^' I$ X* x
8.4.2 添加数据 304
- K) ]3 B7 {+ g! K- M) z5 b8.4.3 使用C语言访问数据 3061 I; T: s% b$ e3 s
8.5 小结 316
8 m+ E6 e+ y+ x( k5 I' [2 S3 ^( v8 V" G' [
第9章 开发工具 317
& j' Z0 f4 D, b
# U9 m5 Z2 F( I# E1 w: P9.1 多个源文件带来的问题 317
  I) l$ T$ t# ?4 O# \4 {9.2 make命令和makefile文件 318" x9 N5 g  K8 j  r
9.2.1 makefile的语法 318
# v) a1 C+ b) f9 m% x9.2.2 make命令的选项和参数 318$ N/ K0 O- X3 v1 J6 g
9.2.3 makefile文件中的注释 321
% \* q5 s; e$ O; Z! O5 z9.2.4 makefile文件中的宏 321
9 L) M# A9 R' j1 O- I' S) F. Y( i9.2.5 多个目标 323
7 m& S  Z. S4 @5 I2 z! l' i5 c9.2.6 内置规则 325* h0 C3 O! Y/ Y$ o
9.2.7 后缀和模式规则 326, ~( x4 R5 j" I& J; g1 L$ B# J; |0 c
9.2.8 用make管理函数库 327
0 O/ _0 X; m4 B& j9.2.9 高级主题:makefile文件和子目录 329) v+ W/ m0 v! f
9.2.10 GNU make和gcc 329) K9 e8 Q6 b. Y5 S# O1 m/ n4 ]8 o
9.3 源代码控制 3303 V# ?3 g' s# w- \+ @% F
9.3.1 RCS 331
8 z4 g; ^8 s7 q: E4 D9.3.2 SCCS 336
4 [# D- N4 S/ e- z9.3.3 RCS和SCCS的比较 3366 o8 J% i$ c3 x5 \
9.3.4 CVS 3373 D* U/ \1 e0 B; c
9.3.5 CVS的前端程序 340
0 Y4 b" n3 A8 y0 i- L9.3.6 Subversion 341- i7 S, b! v: ~5 P! X: G0 t* \2 j
9.4 编写手册页 342" A, T4 Q& v9 R# L% c
9.5 发行软件 3455 f: U4 w2 G+ N' D) O7 j- A
9.5.1 patch程序 345/ z/ x9 F' Q& l1 s6 u6 v3 ~
9.5.2 其他软件发行工具 347: b; B9 N  m& K" C
9.6 RPM软件包 349
" z4 [+ B2 F3 M  l+ p$ ]9.6.1 使用RPM软件包文件 3495 C1 r) B2 h8 P$ u4 {: Y" Y
9.6.2 安装RPM软件包 350
1 e" ]) c% M" X9 x/ a9 \* H9.6.3 创建RPM软件包 350$ h/ m7 j0 H: W7 u6 d% c
9.7 其他软件包格式 358
) L6 g1 t2 f( {9.8 开发环境 358
/ ~4 K! m  ]" Z. w) B, i4 @' u9.8.1 KDevelop 3585 q+ ~' H) e/ P
9.8.2 其他开发环境 3603 P7 t% a. l2 B+ R
9.9 小结 3602 q& T# W  e. z5 a' ^

' z" |# j1 O' T& k  _% x第10章 调试 361
9 M9 ^7 h# Z! z' l& l1 v
7 K( r% G4 u; P3 _# r10.1 错误类型 3617 r3 V8 |3 Y5 h6 f* t
10.2 常用调试技巧 3624 `+ c( Q1 I; U  W6 z" o
10.2.1 有漏洞的程序 362- m( D/ R' T( W$ Q( `0 z
10.2.2 代码检查 364' @& M9 [4 R( f. F+ [! ~" H
10.2.3 取样法 3652 t  I' z% C: _! e) q- ^
10.2.4 程序的受控执行 367
" f+ ?: c  R, z* o: s5 x10.3 使用gdb进行调试 368
( x5 A7 R4 n/ [' z* g4 G4 s# f10.3.1 启动gdb 368) E. _# y2 s4 l4 g+ E2 y3 A
10.3.2 运行一个程序 369
' n2 _& v5 T5 f/ C2 X3 O- t10.3.3 栈跟踪 369  ^0 r* v/ J: I" _; E
10.3.4 检查变量 370# z( ?5 {! M8 F1 P# I$ [
10.3.5 列出程序源代码 370
" J4 w1 ~$ X7 L) Q; t10.3.6 设置断点 371
7 t- R6 P) w, u5 \5 M4 ]10.3.7 用调试器打补丁 374
( K0 `6 c- e* @  c& I6 P10.3.8 深入学习gdb 3758 q! T) Q3 M# B" \4 z. M% M" q. L$ [
10.4 其他调试工具 375- g5 ^5 B. [0 e/ v/ x6 N/ {
10.4.1 lint:清理程序中的“垃圾” 376
- L6 F# S9 a8 M0 G10.4.2 函数调用工具 378
) n6 v/ o; {9 W( j  X9 z. s10.4.3 用prof/gprof产生执行存档 380
' z- F, q  e/ o, }% i  f  t6 l10.5 断言 381) }% n' k/ n* ^+ U7 z* a
10.6 内存调试 383
0 t- J3 O( S$ h- [# x2 Y/ u10.6.1 ElectricFence函数库 383' V' H+ K# r, t! X
10.6.2 valgrind 384
2 R& M. I! y8 \  n3 u% ?10.7 小结 3873 {. X  I7 c$ N: b; ?

7 d' H6 L5 R, N1 @2 ]9 R  ^第11章 进程和信号 388, J* s7 x1 }6 q! L5 R) L# E& v2 W
. ~: n6 G; e8 q  f; R
11.1 什么是进程 388( @5 Z2 m. p8 }. i7 ~; E
11.2 进程的结构 388
% w! w6 l) d: X& h1 @! A8 u- N11.2.1 进程表 390
9 e+ G6 e! F1 ~, M11.2.2 查看进程 3907 l9 h+ f3 s. G  r# }/ C
11.2.3 系统进程 391( {* b4 U! a7 t9 v- x7 l
11.2.4 进程调度 393, E  @" M& y# ^( |# N% d
11.3 启动新进程 394# I" q- P- ?: s: o7 f) K* g2 b" t6 f/ _
11.3.1 等待一个进程 399
, S, W; S1 `4 P: }5 E0 g11.3.2 僵尸进程 401
4 k7 @- g& H9 }$ ^  ?11.3.3 输入和输出重定向 403
) `2 g. B. B0 s; L1 ?; W+ q11.3.4 线程 404- Q% z) g; w# Q* K3 r* q: u9 w3 `! U
11.4 信号 4042 N7 J0 H* V& Y6 N
11.4.1 发送信号 408
7 p# A7 I" |6 J! r11.4.2 信号集 412* z  V% r" R+ r3 D6 [9 a5 `
11.5 小结 415
( E" y1 d0 I, t! |- i3 A4 G3 M/ Z0 e- N
; r3 h2 Z0 b& p% ~+ O/ G* S第12章 POSIX线程 416
+ l& g+ `+ O! j2 o& }4 }) z  j1 A
12.1 什么是线程 416; u/ m0 }4 }3 ]: L! }$ ]
12.2 线程的优点和缺点 417" e, W2 L/ D* g+ L, o7 v* h4 i
12.3 第一个线程程序 418# {; L: o; q* \" c+ N4 ~! V, @
12.4 同时执行 421
2 b/ q* ~, N$ E: ~$ \12.5 同步 423
3 M$ ]. ~, e. w3 u9 Z" v: J: L12.5.1 用信号量进行同步 423/ X2 O% }/ ~7 D+ `
12.5.2 用互斥量进行同步 427% _: Q- p; X1 E" h. A* X
12.6 线程的属性 431
4 t$ n, p3 H) B" [  J4 W12.7 取消一个线程 435; x( Z9 U& n$ J7 C' Z2 i! F
12.8 多线程 438
- m. \) v" B% U- L& A12.9 小结 442& B/ U0 B+ N4 a2 o, Y
  s! S8 m4 s5 S8 H
第13章 进程间通信:管道 443
( f9 Z$ o5 r7 T2 l; W# `( H
, p0 q/ T9 r9 J% l13.1 什么是管道 443
/ z5 d5 o/ l/ l9 d9 a8 _13.2 进程管道 444$ d/ q  _4 n6 z3 q) d
13.3 将输出送往popen 445: D3 j) C0 ?- o
13.3.1 传递更多的数据 4464 o* w0 m' O9 c; ^
13.3.2 如何实现popen 447$ ~) H. R6 G' y
13.4 pipe调用 449  d/ y" y) V" A& V* F% y
13.5 父进程和子进程 451
8 R; O% g6 h) @. p0 h7 q( u13.5.1 管道关闭后的读操作 453
. _; g1 m. R0 D, N4 u13.5.2 把管道用作标准输入和标准输出 454
: k8 s4 a+ H+ Z4 O& B4 {5 n13.6 命名管道:FIFO 456
: D& B# l6 l7 s. o9 t* U0 ?6 ]- w; i13.6.1 访问FIFO文件 458
( n/ F0 @$ F( C& t! Y& w13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464
! G8 z* V5 p6 Y+ A13.7 CD数据库应用程序 468
" `4 b9 `2 T# L! |  w% t' g3 h+ l8 {2 z13.7.1 目标 469
4 x8 x' w* W+ p8 h13.7.2 实现 4691 m* |( k* Z! `! U+ {
13.7.3 客户接口函数 4720 T, i, L2 m" ?! ~" c; H9 V, G4 @
13.7.4 服务器接口server.c 478, r! Y/ T. S; ]/ d0 `0 l
13.7.5 管道 481
- z( N- a+ U3 \9 @( z13.7.6 对CD数据库应用程序的总结 487
% m! K5 ^  p) j) X% L! F) C  k: j% a13.8 小结 487! W3 w* [' r+ L9 b. Z
: s$ o: M. t8 V) \5 O9 c! F
第14章 信号量、共享内存和消息队列 488
/ o; f0 f- p( A& f5 D, ]5 y. w
5 ?; w1 |- U: q* i* H14.1 信号量 4886 i4 ^6 Q2 O2 I  n4 ^" A
14.1.1 信号量的定义 489
- n- o4 ?9 X$ S1 X: [* j14.1.2 一个理论性的例子 489# m2 f8 T: k! Z4 t% X
14.1.3 Linux的信号量机制 490! r7 e! W' H2 ^" s; ~! Q6 z
14.1.4 使用信号量 492
1 s/ P/ ?3 n$ a! H0 I. k; p14.2 共享内存 496$ F8 J9 p/ x1 ^* V/ A( j, d# \0 R
14.2.1 shmget函数 497! N0 ^7 m# D; x. U  e  ^
14.2.2 shmat函数 4973 e% y& o) X) ]; [$ [! l/ M* M
14.2.3 shmdt 498
* J- u2 U2 G' I9 H14.2.4 shmctl 498. x/ p' @3 a5 A2 _  P" R( \
14.3 消息队列 5021 I- v0 F2 x. G$ k8 m6 B0 y  p
14.3.1 msgget函数 502
! [! \0 W! v$ o14.3.2 msgsnd函数 503* c9 P8 X0 W6 j. |
14.3.3 msgrcv函数 503
3 b9 X7 z' u8 ]5 x+ I  q14.3.4 msgctl函数 5045 M  z" A% }) _: U
14.4 CD数据库应用程序 5071 O' V. H( _! x! M
14.4.1 修改服务器函数 5074 m0 Z2 h! X; U: Q4 {
14.4.2 修改客户函数 509$ j. o, E+ E. B. C3 F$ V) |; f
14.5 IPC状态命令 511
1 ?+ ?5 q  a. b$ B$ m& u( V14.5.1 显示信号量状态 511" C+ S6 N* X6 Q9 m
14.5.2 显示共享内存状态 5112 B0 A. x0 @3 q0 p2 p8 T) ~
14.5.3 显示消息队列状态 511
/ [7 B6 M" o1 ?; h7 U' u5 [* i" E14.6 小结 512/ r% _- V! m' x$ x
- P' k1 }: R. f" ?: s
第15章 套接字 5132 ~4 K& z" S3 D9 W0 P: w1 b
0 E4 d5 Y! J1 A" p8 o* P5 U
15.1 什么是套接字 5138 k% ^! N% D9 d5 K6 G. F
15.2 套接字连接 513. A' F: D+ W* l& G
15.2.1 套接字属性 517
( J; S7 W  |: }8 Z/ A15.2.2 创建套接字 5194 l: A3 _" W8 M  Q8 Y$ ^! y
15.2.3 套接字地址 5206 I$ u$ z9 d( t- N0 n+ u" B6 |
15.2.4 命名套接字 5203 n# r  H8 H& D2 Y( {" C
15.2.5 创建套接字队列 521. u3 U; q2 @5 P" ]
15.2.6 接受连接 5212 H5 I* _9 i+ m' s, ]
15.2.7 请求连接 5229 D- s# X) b3 i
15.2.8 关闭套接字 523
7 k9 W- z% c& p- ?; b% s15.2.9 套接字通信 523
1 D) N% G( u' H# _* M15.2.10 主机字节序和网络字节序 525
3 L. F( P5 O- h3 J/ x15.3 网络信息 527* W8 i8 o/ o1 m+ Y$ o; I: w
15.3.1 因特网守护进程(xinetd/inetd) 531& N0 x( H/ j% T7 k
15.3.2 套接字选项 533! Z2 b8 z9 P8 T, d+ o
15.4 多客户 534: d) o# k) A4 }/ O4 V& Q% e! d
15.4.1 select系统调用 537
! q' t2 w- |# E. S3 ?& d' O15.4.2 多客户 5408 k% b" d' O& ?
15.5 数据报 543' s. q+ M/ [2 T4 D
15.6 小结 545
5 ^2 z% h4 V! f/ `/ G) ~* G1 l5 @; @/ i& L' i( W
第16章 用GTK+进行GNOME编程 5469 w9 K- X2 \+ ]5 S+ C% [

' W' Y  h5 Z# o$ @5 S% I16.1 X视窗系统简介 546
3 ^, h0 I1 s; V, o( M& ^* R+ u16.1.1 X服务器 5470 P& @2 J7 a  M1 ~- C& H* W
16.1.2 X客户端 547
  E* r$ h' _9 _% h) I3 }# i16.1.3 X协议 547
" Y0 _! E+ {- N, _  C+ U16.1.4 Xlib库 547
: }0 h9 A5 x  N( H! d) b8 R# f9 W16.1.5 X工具包 547
0 E6 J# E. N+ m16.1.6 窗口管理器 548
' C; Z! j- b+ a16.1.7 创建GUI的其他方法——平台无关的窗囗API 548
. ?6 X8 G6 U8 J* J2 e7 o# k. Z16.2 GTK+简介 549
# X8 S$ ?/ w$ ]$ S- q+ X$ G5 }. l16.2.1 GLib类型系统 549  U* u% B& q" |* f8 g
16.2.2 GTK+对象系统 550
* \: u7 l" h0 o3 |; @3 t16.2.3 GNOME简介 550, t  a1 W; L" A6 ^* L
16.2.4 安装GNOME/GTK+开发库 551
* L' {0 Z3 P, J( B% [2 l& K16.3 事件、信号和回调函数 554
4 n7 G, ?+ p9 B8 x/ Y0 ^16.4 组装盒构件 556
5 P- i. r- k. J' m( p$ y% Q16.5 GTK+构件 5599 \$ l: C; ]" P5 o3 Q
16.5.1 GtkWindow 559& A; l% M) m+ V& _
16.5.2 GtkEntry 560
% M- n6 j; q. g9 x# f' p16.5.3 GtkSpinButton 563; x& }2 D4 z4 y+ G' A2 \  F$ p
16.5.4 GtkButton 5658 e0 V' i$ u& G+ U7 o1 m3 R; D
16.5.5 GtkTreeView 568
/ R7 b. h9 S" x. M16.6 GNOME构件 571
7 M7 y) x7 p9 R) A" z4 v6 |6 Z16.7 GNOME菜单 5727 R+ E. G, `" m) w, s
16.8 对话框 5766 o' F3 V# L3 [$ `5 b
16.8.1 GtkDialog 577
5 b# J6 b4 w) O* n0 u. \16.8.2 模式对话框 578
' b; b0 O! p& |+ X2 Z, D16.8.3 非模式对话框 579
5 D7 u7 q; o& x* Y$ d6 ?9 z16.8.4 GtkMessageDialog 580
+ Y; Q6 C, U% A6 [- {16.9 CD数据库应用程序 581
# I3 b; {- d2 r0 V, m3 Z0 Y( D& c' v! O16.10 小结 5920 ]2 w7 x! s4 W% T

8 ^4 w0 D4 F! g* {; _5 c第17章 用Qt进行KDE编程 5930 D. }+ v; i, x5 B& l- q$ t
* [* F6 z' X' `( Y
17.1 KDE和Qt简介 593
% n. ^- |9 b( r& M3 e. ]+ Z0 r: u17.2 安装Qt 594
+ V1 E& s. e) k! v17.3 信号和槽 596
" @& K$ [  k- K5 d6 r" q17.4 Qt构件 602, Z* b) R, x: Y
17.4.1 QLineEdit 602
' O, y( Q+ l3 q- I4 f17.4.2 Qt按钮 605
# V' H" _" p; F4 p0 I! q% T17.4.3 QComboBox 609
( B2 z% K. y* r1 R) }17.4.4 QListView 613; K3 H  y% B( W
17.5 对话框 615$ e" n+ n9 t2 L9 S; T( X. T
17.5.1 QDialog 615
3 V( O9 Y' A: ~3 F: [  a17.5.2 QMessageBox 617
9 T* f# ~) w, z! R+ ]17.5.3 QInputDialog 618  X4 u6 u# D" x
17.5.4 使用qmake简化makefile文件的编写 6208 w$ J$ M# V9 ]" W: e5 ^- |' T
17.6 KDE的菜单和工具栏 620
- g/ t# N, {& f) u) f: Z$ ^17.7 使用KDE/Qt编写CD数据库应用程序 624
+ W! S3 E$ m7 J) c6 ~17.7.1 主窗口 624
. _% ?: r) q% s6 ~17.7.2 AddCdDialog 627; Y' b+ b& k9 K7 A0 j. c' N
17.7.3 LogonDialog 629" X7 T% Q; x5 N5 c: _
17.7.4 main.cpp 630* I6 b( g1 h# j1 F5 f2 i* b
17.8 小结 632
# f* z) B8 @' b# r, _  y
& i; U9 R; T$ i, ^4 r第18章 Linux标准 633
# W, I# X$ i3 C2 j
* B' a; k; ^2 x6 \" M9 j18.1 C编程语言 6345 ^5 Z& E6 W4 t, @1 ?$ J) u  o( s
18.1.1 发展历史简介 6344 E% r! u4 {, W0 x, |
18.1.2 GNU编译器集 634
) Z" v! t; h: r8 F6 q18.1.3 gcc选项 635# M' Y' c4 j/ F) l+ ?! x  c5 ^
18.2 接口和LSB 636
" w) h+ A+ w$ Z- E18.2.1 LSB标准函数库 637. G9 t7 y  |& H
18.2.2 LSB用户和组 638
2 g0 F' ]% _0 [- F& ], w, z* \18.2.3 LSB系统初始化 6381 s- s; t" c- x
18.3 文件系统层次结构标准 639
* a( n' l' K6 s18.4 更多标准 642, w4 F9 T, d# m% o( Q1 L( Q
18.5 小结 642
) A  U4 z  r) T* B
* y; K% A$ X4 S+ _$ V4 Y9 O1 B- ?; P$ |' g& H$ z8 {2 l

评分

参与人数 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 | 显示全部楼层
看起来是不错啊
1 ]) R6 X5 l4 L  J% v  B: O4 m
想知道小甲鱼最近在做啥?请访问 -> 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-4-27 20:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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