鱼C论坛

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

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

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

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

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

x
TB1SlhmMpXXXXX7XVXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg
5 K8 E9 L# K" f) t3 m1 t; V8 j# l/ ?; j3 d
3 d, N/ x/ e; ?
书名:《Linux程序设计》- K/ f- f' |  h9 d
作者:马修 (Neil Matthew),斯通斯 (Richard Stones)' `; }- g* W+ _. A+ K) s
译者:陈健,宋健建 ! v! h9 z7 |4 O+ {: r0 c$ y7 c
出版社:人民邮电出版社
0 D* F# c0 L4 [1 m出版年:2010年6月1日(第4版)
* N- ]& D$ W% n( z定价:99.00元2 a+ H2 X  P$ [9 G/ x& e
装帧:平装
3 W1 V1 H( O# E3 BISBN:9787115228215; ]/ H! |; A+ I, K6 T3 b% W
) O! q, E5 y3 i+ ^& S. {
购买链接:
# _* c) V0 M" u5 p) w- W: }# K- v' k3 _, p- z: P

+ N7 o" S0 t, a* G
亚马逊(Kindle)-> 传送门
! @/ g6 @5 ^5 O9 `( e" T: t4 D, m$ W& v- Q: p
亚马逊 -> 传送门9 Y$ d4 V: D6 ~) K1 }( M) W* [  ^
7 W# V1 R7 R* l
当当网 -> 传送门
9 C6 i+ g' Q* W6 H0 B
1 v* G1 a" ~; h3 L2 X' A" C京东 -> 传送门% a) d6 D5 C8 @4 V3 u: f

0 u: `# E$ D" P6 h3 p天猫 -> 传送门
: n, B! v* m' f; q. o4 j! H5 N! q" \& o2 q. Q( S, n' q, z

0 G& E6 Z# ^/ j6 H' p# ~6 I内容简介:
+ n' M1 [9 O* _( N
- y2 A+ j9 \: @. d8 ]

' W. r; }' Z  S8 \7 p《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。3 {& J7 f' g. p* u' |3 F4 u! p

8 b4 k4 |/ S" L3 d$ v! K《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。
; I( q6 K% y9 a1 G. z& F
# G, L( J* ], }2 C  a2 L; _
9 }8 V4 P( n. |目录:
3 e; Q" F& f9 r- K2 L
$ l, Y( w4 n6 b( \' H0 |) R0 Z

3 E: q! L* @9 Y6 h+ F3 N5 n( [第1章 入门 1& h" Y$ a9 ?! [

6 A: q2 E; m& r( r1 R# A9 x1 \& `1.1 UNIX、Linux和GNU简介 1- `7 m5 [- }  L7 N3 V- ~7 ]
1.1.1 什么是UNIX 1) q6 p7 n7 ?  Q2 E# B
1.1.2 什么是Linux 2" Q  X4 h# G' U/ v$ n2 y  N
1.1.3 GNU项目和自由软件基金会 3
6 [6 h: |" z' d+ a8 P1.1.4 Linux发行版 3
/ P( }& E6 i/ C2 M1.2 Linux程序设计 42 `4 R& G) m- `/ t; K& ?
1.2.1 Linux程序 46 ~$ J0 D& n9 F$ S5 N; M( s! G. r$ a
1.2.2 文本编辑器 5' g! O! w9 z  l0 q9 n  e& H  ]; }
1.2.3 C语言编译器 5* x- s4 I* u% ~! S7 s0 a
1.2.4 开发系统导引 7
7 x! p/ q8 z. P5 X* I1.3 获得帮助 12/ D0 H  d! T" s' ^" L
1.4 小结 14
+ n# P  D/ ?  }* Y6 k8 d8 b. w4 k
- u4 X# V* m$ \$ J第2章 shell程序设计 15
  _( c+ H) f# v8 O( R6 ]: ^8 w/ E8 F9 L
2.1 为什么使用shell编程 15" _& d+ I0 ]5 o: E! _% a/ m
2.2 一点哲学 16' v1 m5 E: f$ ]2 [/ U& |1 Z
2.3 什么是shell 16
) l* [  E  @- U, B; ]4 o2.4 管道和重定向 18
1 @1 h4 L, q" e. Q, S2.4.1 重定向输出 18* p' C, a8 K# {
2.4.2 重定向输入 198 s* l- u5 C4 t" p& U
2.4.3 管道 198 N" t- K) K, h+ h, _
2.5 作为程序设计语言的shell 20
4 j: _1 w; p* b2 ~1 e/ p( m2.5.1 交互式程序 20
) B( L- s+ Y; ]/ l2.5.2 创建脚本 21
% F% h+ K# [- R' n: x  I2.5.3 把脚本设置为可执行 22
, V# q# F0 X# O0 x: l2.6 shell的语法 23( w" d- x, m& ^5 L' E2 w5 B
2.6.1 变量 23: d( @! U7 r) s- n' ~- @2 I3 W
2.6.2 条件 27
4 f. f+ ^6 @& i1 B3 e2.6.3 控制结构 29
7 g. Z: T) n+ P$ @; |9 L) Z2.6.4 函数 39
9 |7 c! V  [/ x9 {! c$ M2.6.5 命令 42, Y5 O* n7 f0 {* s$ D  n8 k
2.6.6 命令的执行 58
4 O% K2 j. |: s; x' r1 q! C: x2.6.7 here文档 61' `+ K4 k6 j6 u+ p! \. G, ]
2.6.8 调试脚本程序 63
: w" W. P% \4 K9 S- Y' X: \2.7 迈向图形化:dialog工具 63$ m7 p5 i! V7 s3 p# y0 `$ r
2.8 综合应用 68% B6 X$ N+ a+ ^+ Q+ w
2.8.1 需求 68
, J6 Y1 p3 w' G) H2.8.2 设计 685 A  Z# ?2 i/ V; o0 ]$ S: L
2.8.3 应用程序的说明 76
, R3 [( T( b! T% \0 u; Z% b0 K1 I2.9 小结 77
7 d* z1 Q! i- J9 M! S0 O
6 ?" E: E8 y% I2 P; [7 [( S第3章 文件操作 78
  [$ k+ w, o/ \5 k& f: `2 w( X8 C/ V# `( N7 r5 H5 m
3.1 Linux文件结构 78% v4 u3 |; m5 m9 @0 u, r' a3 C: m
3.1.1 目录 79
9 A2 _0 g8 \) x7 {+ b% l0 z; l! z. k3.1.2 文件和设备 790 t4 }- @) j" d7 A. v# E, @5 `
3.2 系统调用和设备驱动程序 80
3 \* P  ^2 W) }1 F/ U0 s) s3.3 库函数 81
" y' e0 g* R" Y, V: U, f* ?1 j! S3.4 底层文件访问 828 W7 `* c9 `( {: {5 G+ K
3.4.1 write系统调用 82
) q5 {# F' ?/ A8 x3.4.2 read系统调用 83" g& a: K  Q6 {3 F! p
3.4.3 open系统调用 84. J4 X2 z% z8 c7 B( ^  R  W4 @; p
3.4.4 访问权限的初始值 85
* w8 ^+ B/ J. k: o% R5 M+ Y# e; W3.4.5 其他与文件管理有关的系统调用 881 O, m8 l0 z! p- P* I# S* p8 I
3.5 标准I/O库 91; f% z0 w+ q/ \2 P; G! d- g
3.5.1 fopen函数 919 I3 ~; K! B( V: ^; T( j0 e8 [
3.5.2 fread函数 92
2 S, |0 u+ V( Y! D* q7 G4 B3.5.3 fwrite函数 926 E$ ]4 C0 L: {1 ?; e0 y
3.5.4 fclose函数 92" D& p1 o* _/ C* n. H+ }+ X: |
3.5.5 fflush函数 93
1 s, S6 f7 P. x/ |3.5.6 fseek函数 93
, |6 v* P7 k2 b, j1 r+ y; r; f3.5.7 fgetc、getc和getchar函数 938 h. Q) @+ N8 _+ g. Q
3.5.8 fputc、putc和putchar函数 94
" ?1 |$ k' }0 P3 u3.5.9 fgets和gets函数 94
: G. y9 s. R. s3.6 格式化输入和输出 94
, |6 V: A5 n& n2 K3.6.1 printf、fprintf和sprintf函数 94
8 B( d* Y3 A' i! h- n" l" F3.6.2 scanf、fscanf和sscanf函数 968 |0 H$ L5 g! S; ]' j# U( s
3.6.3 其他流函数 98( H7 `7 A( I3 J# e% G
3.6.4 文件流错误 99
% k( o9 b6 D+ M% l0 X' ?3.6.5 文件流和文件描述符 99
0 \" w4 g+ F1 l  V: b! X: b5 _3.7 文件和目录的维护 100% Y( x4 K0 c4 U4 Z: ]) |
3.7.1 chmod系统调用 100
4 u7 E, }3 L" @( b. D2 o, Z: K! y5 m3.7.2 chown系统调用 100
- j; F" r8 a  o3.7.3 unlink、link和symlink系统调用 100- D# f& Q; o# b- z+ |
3.7.4 mkdir和rmdir系统调用 101
, y7 Q6 X0 h! {3.7.5 chdir系统调用和getcwd函数 101
  [4 N2 J* D0 ]% i# l3.8 扫描目录 102- D2 E7 N) y: F0 ?4 r
3.8.1 opendir函数 102
3 s; X) W  Q! Q2 v# e$ s3.8.2 readdir函数 102
$ ^) S# Q0 f4 m* C  y3.8.3 telldir函数 103' l2 U# e! B; o
3.8.4 seekdir函数 1035 |# \  M1 g5 d, x
3.8.5 closedir函数 103
  A. H; ^( w3 n' R3.9 错误处理 1066 |4 C9 c) y) I2 A( a
3.9.1 strerror函数 106
; k  o+ g2 l$ B6 v  w, ?" F* P3.9.2 perror函数 106
& ~! Y4 L, l8 O5 b! |, r3 f7 K" g3.10 /proc文件系统 1071 }+ c' a" }2 e" y
3.11 高级主题:fcntl和mmap 1106 D* o/ U6 k" J4 x" v2 ~# c
3.11.1 fcntl系统调用 1103 D- L& m$ F" `1 @, @% a' W3 T# T
3.11.2 mmap函数 111, j& n3 \/ }1 c1 b- w
3.12 小结 113
% ]. j8 D, p& D& }0 Z
" O- t5 n! L6 v第4章 Linux环境 114
4 R5 X! U7 p* ^. m5 s$ U1 q* ]+ y9 Y' b8 |
4.1 程序参数 114
$ Q2 e' ]  h/ |0 I! m4.1.1 getopt 116
, ]) J* m0 s3 ~& D9 r4.1.2 getopt_long 118
. a: K* ]: `6 H! `$ x7 Z% R4.2 环境变量 1209 n! D) Q/ c1 h/ A' |
4.2.1 环境变量的用途 122
1 N2 D4 X* `% A) ]9 h9 t" m! ^4.2.2 environ变量 122. s  T9 X6 y7 u( L6 O8 _3 E3 {
4.3 时间和日期 123# M" L& m' Z' K+ m8 {  D
4.4 临时文件 129
' g2 J: b& n8 m' L, O5 G  ]4.5 用户信息 131! v( Q3 S3 p7 _( N8 O
4.6 主机信息 134
! ~2 M, |/ |3 e! g0 ~4.7 日志 135* W! W- d* f* u3 a4 v5 P. k$ U' S
4.8 资源和限制 139
/ H" _. B! j: D, G; c4.9 小结 143
3 ^  f+ o' f) C/ e/ h- x+ J* \
5 G9 Q( l0 ^# Q0 {* Q; p- ^! Q第5章 终端 144
) m9 U  s* i( ]- s0 ]: H0 f2 U: Y, F! o
% C4 `+ Y# \$ |, N6 n- q3 T5.1 对终端进行读写 144
' M, D  z: N9 b8 r6 O4 S, Z  u) J5.2 与终端进行对话 149
) `6 m- ?5 x8 [3 d* ]/ m5.3 终端驱动程序和通用终端接口 151
% p8 {, Y! Q# a/ `) t/ d) \& Z5.3.1 概述 151
. W& v" l9 x9 {5 _6 a7 H# X4 c5 @5.3.2 硬件模型 151
' o, D! i5 Y2 m  H% _* X. P5.4 termios结构 152' H& [" t) M/ a' n+ _9 M  `
5.4.1 输入模式 153
( O, E( P# F$ d5.4.2 输出模式 154
& ?( o- j' O" ~$ p9 a3 M7 G1 f3 w5.4.3 控制模式 155
5 u3 i; Z9 v4 X0 X! I5 V! l5.4.4 本地模式 155- B0 g! B4 r' Z/ P3 N
5.4.5 特殊控制字符 1553 a# l& f1 X9 \# W( n$ G
5.4.6 终端速度 158
5 C' Q) l6 g* g/ R, j5.4.7 其他函数 159
- v% y( B: ^3 o5.5 终端的输出 162
* i/ s& K3 N3 h" h( s5.5.1 终端的类型 163
, {: l+ {4 R/ |5.5.2 识别终端类型 163
) e8 p; ^' \( ]9 `4 _# x5.5.3 使用terminfo功能标志 165
" t( t! a* e) L% X5.6 检测击键动作 170
+ B6 i1 A/ A: {  C! I5.7 虚拟控制台 172
. h% |3 L8 h3 B& }2 w1 Y% A) K) l& ?5.8 伪终端 1738 S& j  V. q7 T$ v0 W0 E
5.9 小结 174( m+ V/ \9 T/ V7 n$ k* |9 [

7 q2 j* y9 ~7 A第6章 使用curses函数库管理基于文本的屏幕 175* V5 {! p5 o5 y' l1 l& W

& N+ u5 U, a- s/ q' c; \6.1 用curses函数库进行编译 175! D2 i' r1 W1 q& I
6.2 curses术语和概念 1763 N) ^# e  q, D4 R5 Z* a
6.3 屏幕 178$ w8 v9 \$ l+ J
6.3.1 输出到屏幕 1792 d, w7 L1 K6 S% t, \8 f' D
6.3.2 从屏幕读取 180
3 m6 E- ~& x" |7 g0 ?) u: G: y6.3.3 清除屏幕 180
5 P1 R) F( |4 t7 T: L6.3.4 移动光标 180
3 D/ ~7 _$ J) M" t, G% d( b8 b6.3.5 字符属性 181: V  k* X- X2 ^4 H8 e& c* H" H
6.4 键盘 183
$ j. b* `* v) B% G1 W: n, c6.4.1 键盘模式 183
, P) j) `; n8 y% \, F/ ^! l( ]6.4.2 键盘输入 1843 C; s- G: L/ ]3 I
6.5 窗口 185
- k% X2 N5 }# [4 h. _6.5.1 WINDOW结构 185
7 @: |& C1 X# `$ n8 |6.5.2 通用函数 186
7 S/ h- k9 J4 b3 F2 |6.5.3 移动和更新窗口 187! h" E- K+ ]) T$ G& z. w& I
6.5.4 优化屏幕刷新 1902 o! ]- u+ a9 \% ^3 V6 K
6.6 子窗口 191
; N; K  b% U! P* z2 U$ T) m6.7 keypad模式 1931 D& @# P9 z2 H" Z
6.8 彩色显示 195
, m( j0 Y( P6 s2 M1 S6.9 pad 1981 |- k; y9 S3 {2 b0 [- |3 S
6.10 CD唱片应用程序 200
9 j3 r  q0 V4 V4 L& s6.10.1 新CD唱片应用程序的开始部分 200
" U) s) q5 P9 n, Z6.10.2 main函数 202
6 ^( H8 V& k, K. L6 X  m6.10.3 建立菜单 203, |- R& B5 {; v' w6 ~" R
6.10.4 操作数据库文件 204
2 o7 `* D. I: I( k# O% N2 r* A6.10.5 查询CD数据库 209* p' m+ \. H; d& x8 a2 D
6.11 小结 213) B9 y. Y+ _  b, t" f$ G

8 B9 L& e4 b0 C* U第7章 数据管理 214; Q1 r! i& I3 _! M5 x
6 i/ n, |3 Z+ q, d$ E* d: i8 ^
7.1 内存管理 214
5 ^7 p) a% a* t+ {0 c( `7.1.1 简单的内存分配 214: a# ]; A$ h+ }6 O  J7 {
7.1.2 分配大量的内存 215
; r9 q# `$ ~) x7.1.3 滥用内存 2187 l2 z& z: m. P% u1 `( G. O
7.1.4 空指针 219/ e; s# ]8 q: @# S
7.1.5 释放内存 220
  q7 W. D/ g& y- d7.1.6 其他内存分配函数 221  _4 ^; R" Z. I5 o8 R: B( z- E
7.2 文件锁定 222' c4 H* c( S! q7 v2 n
7.2.1 创建锁文件 222. V$ ?, A' L3 `$ P0 o
7.2.2 区域锁定 225% X5 P+ L8 k# L% }! H) s- p4 Y
7.2.3 锁定状态下的读写操作 227( ~6 K( J- a. J8 D$ F/ X) y
7.2.4 文件锁的竞争 2320 m: D9 }9 i5 M. Y8 Z* Y# l& n
7.2.5 其他锁命令 236
% Z: t+ S& n; Y2 t9 M8 V3 l7.2.6 死锁 236
# R, f  g! k) [9 \7.3 数据库 237
( B# c7 ~/ K6 U  W/ Y7.3.1 dbm数据库 237& D' ~! G  N0 E. M" D* J* n
7.3.2 dbm例程 238: h0 @/ w% S" v9 h% F& s6 y
7.3.3 dbm访问函数 239- [3 Y# w9 \0 ^" S9 q
7.3.4 其他dbm函数 242# d5 R. B1 v/ ~0 v" n
7.4 CD唱片应用程序 244
1 y0 B! `7 ~  L8 C# z: T) S7.4.1 更新设计 244% ^8 O% v. z' W
7.4.2 使用dbm数据库的CD唱片应用程序 245
" T' ?- h9 _) @7.5 小结 262
+ I* d3 G. _/ `+ Y+ s
2 r2 I1 \3 J! ?, d5 n0 h. g第8章 MySQL 263
) m" ~' f0 J/ r  h
/ l8 t$ w9 ]* z& |' O8.1 安装 263: ?+ k  V/ V/ U2 k0 ~
8.1.1 MySQL软件包 264, K) ?' |3 c  v: B& W
8.1.2 安装后的配置 266# S" \4 ~# D2 c" X) F# z) w
8.1.3 安装后的故障修复 270
% {: G6 x  F0 b! L" ]7 V" i0 i+ A; y8.2 MySQL管理 270) Y  a/ ?" ]" t4 Y2 `
8.2.1 命令 270" e/ |; j9 k9 e$ ?
8.2.2 创建用户并赋予权限 274
& d1 J" ~' e' g( X/ p8 s8.2.3 密码 2760 z# {( k' n* F6 D. J: I+ \% P
8.2.4 创建数据库 2767 R) W- G3 F  g' B4 Z5 ]5 t/ a
8.2.5 数据类型 277
3 [/ |3 |5 E. P, T% U# Y: O8.2.6 创建表 278* C3 n- M. z+ ?" [2 m) I! Z
8.2.7 图形化工具 280
( m& t& `# S/ n0 G$ @  [8.3 使用C语言访问MySQL数据 283
4 C" G4 g. s! S, q4 J8.3.1 连接例程 283" P! G- C7 q& n4 {7 L/ H  @
8.3.2 错误处理 2872 u3 t/ y# M" n
8.3.3 执行SQL语句 288, w- A4 }% H- {1 k. i" l1 D
8.3.4 更多的函数 301
  {- W! D- E; Q8.4 CD数据库应用程序 301
+ Y8 Z! G9 ~4 I6 ]8.4.1 创建表 302
5 h: ]7 M& e. B! |' F8.4.2 添加数据 304
& s- ^: \: Z9 D! h8.4.3 使用C语言访问数据 306
8 v" r" }1 G/ C% k8.5 小结 3163 o  v+ O2 |$ R0 S

5 e- |5 r$ w$ K3 O# j8 a, Z1 ~, K0 O; O第9章 开发工具 317
- I( `0 V3 f4 G# _
& K& {5 @3 M: h: C9.1 多个源文件带来的问题 317
  V+ t: Z( m% Z- {! M4 ^9.2 make命令和makefile文件 318
6 E( e' f& |+ P0 y  d6 a* J$ I. a4 z9.2.1 makefile的语法 318/ s) J; T3 v7 I& [+ @
9.2.2 make命令的选项和参数 318
2 C2 u8 o6 t! G! d3 S7 O9.2.3 makefile文件中的注释 3215 Z. a2 E  r$ p
9.2.4 makefile文件中的宏 321* v/ c. g9 C0 k( U/ ]7 B: d, M. v
9.2.5 多个目标 323( b7 E% W& W3 ]& t6 Y% k+ i
9.2.6 内置规则 325+ `7 B. ~' ^/ x; @' t
9.2.7 后缀和模式规则 326
' m) n4 w, C, C( `+ a9.2.8 用make管理函数库 3275 _& D- R: R5 @' h$ S' ~( [8 x
9.2.9 高级主题:makefile文件和子目录 329
0 ~/ d7 D! h  R! D/ K6 T9.2.10 GNU make和gcc 329
! K0 G. F2 }' H# q0 ]6 v5 s0 ~9.3 源代码控制 330
, w" D" f- o' |4 O! p2 K( m7 g, c9.3.1 RCS 3313 T0 c. J; `  G  l; Z
9.3.2 SCCS 336! ]9 S5 S# a. \
9.3.3 RCS和SCCS的比较 336. y1 @2 y' I% M
9.3.4 CVS 337: V7 O. ?$ n; v1 j# ~' n! Y
9.3.5 CVS的前端程序 340/ S3 G4 ~! b9 i/ Y: _7 g0 I; Q7 B
9.3.6 Subversion 341) v! P2 ~3 O+ E
9.4 编写手册页 3422 c8 ~% Y2 Y8 H2 W  u
9.5 发行软件 345: `/ n& u4 ~1 r0 a$ d
9.5.1 patch程序 3456 o, A7 |, I/ U; S' l; |& A) u& P8 W
9.5.2 其他软件发行工具 3471 ?3 a$ A+ g5 Z  _! U# r$ z+ Q
9.6 RPM软件包 349
, N: m0 r# E# t9 O0 t- @! y2 @9.6.1 使用RPM软件包文件 3492 N) C! |% J( M. {" ~- v
9.6.2 安装RPM软件包 350
. f0 W6 h% {" J; Q9.6.3 创建RPM软件包 350& n* c6 N9 @& M4 w
9.7 其他软件包格式 358
. o* S5 c: E- r1 E: }" ^( A. k9.8 开发环境 358
7 C5 {: f( E) D- O: v* `; V' O  R9.8.1 KDevelop 358+ M" W8 y% D, N3 E5 p
9.8.2 其他开发环境 3605 |# ~' u' y3 N
9.9 小结 360, |) D8 W) i2 o6 K$ S

1 b6 P, z1 s' U$ u; d2 _! G- r, B5 x第10章 调试 361
5 }# k/ E8 E( m. g  j# Z3 _; ?3 b, q" n* l2 W
10.1 错误类型 361
2 {1 Y4 O9 E1 f, i5 @. k5 s" |10.2 常用调试技巧 3628 y. J  ~# L) q; J
10.2.1 有漏洞的程序 362
/ X, P0 e+ h+ G, D7 j10.2.2 代码检查 364' v. X' m/ G3 F" n* o9 q! W
10.2.3 取样法 365- s7 K% p; |5 c
10.2.4 程序的受控执行 367
6 m- c4 f- Z7 j, k/ T( e, ~) S10.3 使用gdb进行调试 368
3 f- I! _# Z+ ^* Y10.3.1 启动gdb 368
, M/ `" n6 ?$ t8 I- M) E* c10.3.2 运行一个程序 369
# `5 q$ ~6 F8 u  K10.3.3 栈跟踪 369, z4 G0 e7 K5 i5 x/ _
10.3.4 检查变量 370
4 k7 U9 `" B/ K# q" g* C! c10.3.5 列出程序源代码 3700 H& n. J# _0 Q9 |+ l
10.3.6 设置断点 3710 D1 P- R- B& h
10.3.7 用调试器打补丁 374
8 i& d% h( z- D2 z$ Q, h  U0 o10.3.8 深入学习gdb 375& L. g  F/ x, B
10.4 其他调试工具 375
4 I4 R$ R! n; o' B5 C! k9 v- V6 L4 |10.4.1 lint:清理程序中的“垃圾” 3765 k- v% A7 S) j" Y
10.4.2 函数调用工具 378
- @# G6 F3 ]( X$ C' d0 s6 M10.4.3 用prof/gprof产生执行存档 380
9 R1 i( J, D, n7 ^6 H: e& d10.5 断言 381
. f' e) U9 T! y/ B4 Z- _3 ~10.6 内存调试 383
& D' m4 Q, B( j- ?+ z* \10.6.1 ElectricFence函数库 383
5 m$ \4 K7 I8 S9 V7 R: t10.6.2 valgrind 384( {; F1 }- z  O6 T$ F0 q2 f# e1 N
10.7 小结 387
$ Q& o5 {" X4 ]" [8 x* g) B$ X( ~9 f( g4 m1 _
第11章 进程和信号 3883 l! A2 z# [$ Y$ |9 j9 x, I
2 u) @5 a9 _$ d! _5 o: s  w: E
11.1 什么是进程 388( J4 i$ s' d# k4 @8 Z+ q9 s
11.2 进程的结构 3880 I5 p- ?7 `( Q; S' y% l0 ?1 c
11.2.1 进程表 390
; \7 `3 L! r2 y11.2.2 查看进程 390
# K+ ~# s: r* k5 d11.2.3 系统进程 391
# A( a9 M% J5 _  _) K11.2.4 进程调度 393& c( [6 `6 H$ i( n% y
11.3 启动新进程 394
8 p+ q0 z. Q/ G" }( L4 @9 X11.3.1 等待一个进程 399" q9 E, i/ Z2 T6 m5 @. h2 |
11.3.2 僵尸进程 401
# _5 ~- J8 W2 L, J11.3.3 输入和输出重定向 403
& l! N& @8 I. e! V4 A11.3.4 线程 404
) v' e8 d9 O; P11.4 信号 404
6 O, `% @( [1 [11.4.1 发送信号 408
% q3 N1 V9 c# L11.4.2 信号集 412
; W+ M$ o  @' I" B# L! q11.5 小结 415
! l1 r3 V, ], O3 [ * [* _6 z& }: A, \( A, A
第12章 POSIX线程 416
  ^% u9 ^1 K# D, M% d6 U
% |  n0 }. @7 J: d2 f' u* L, W5 i( Q! U9 J12.1 什么是线程 416* g+ w! M! Q8 k% q$ E  v
12.2 线程的优点和缺点 417
/ l- a% j2 m9 {1 v4 ]. r12.3 第一个线程程序 418
! D+ Q: _+ [8 Y5 e* A* b; N12.4 同时执行 4211 _3 o5 P( b; _$ @( a+ x
12.5 同步 4233 I* w! I; J1 t- W- {, T! a. T( t
12.5.1 用信号量进行同步 423& K( F( I6 n" j: N: n  Z  d
12.5.2 用互斥量进行同步 427; w2 t  l/ B* A7 l& H! _
12.6 线程的属性 431
2 _9 v% B* q6 w' J12.7 取消一个线程 435
4 X5 Q/ ~8 D* H( j" \5 l12.8 多线程 438% Y% t, b$ k7 ]6 U' v3 M
12.9 小结 442* a. w7 s! n2 X) G4 O8 X
$ G8 c% s  G) L: _
第13章 进程间通信:管道 443
, u7 W. J4 U4 u7 @% Z4 @. q& G9 x% ]! u2 p* H9 q1 J
13.1 什么是管道 4430 z' Y1 ?4 U/ W, m/ j- X) x
13.2 进程管道 4447 u2 N0 i$ G: ?4 M2 |: T
13.3 将输出送往popen 445+ E8 z% S/ V8 M
13.3.1 传递更多的数据 446
% W* S/ Y3 W  ?2 w* l13.3.2 如何实现popen 447: _- W9 b% O8 p+ a. @1 O
13.4 pipe调用 449$ X; S, ]; c3 @6 c2 x  z+ \4 W: O
13.5 父进程和子进程 451
( K& l! U# E' v7 }+ [6 }13.5.1 管道关闭后的读操作 453
2 d+ s" V( z7 a13.5.2 把管道用作标准输入和标准输出 454" h6 |- k: u1 X5 B, k* V3 H4 u
13.6 命名管道:FIFO 4566 q' C3 @3 r! c: y/ s0 ]4 {9 G
13.6.1 访问FIFO文件 4580 Y6 Y% `( w/ S! f. h; N
13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464  R  Z% X; L# m% S
13.7 CD数据库应用程序 468
2 A1 x" z4 ^* |9 N9 g4 @5 Q% H13.7.1 目标 469
. h* P* e+ j4 K- o13.7.2 实现 469
* l, r& h. m  h+ z1 ^6 N" n, Q13.7.3 客户接口函数 472, T9 V2 r$ }# ^  W7 h/ ]
13.7.4 服务器接口server.c 478+ K; N( E% d, ]6 n( ?( O8 s
13.7.5 管道 481- }8 g; R* \4 p/ }
13.7.6 对CD数据库应用程序的总结 487. U, {$ a) M6 H0 r
13.8 小结 4874 U! m* y* G5 _/ n
' Q6 Z3 |, Z; j* ^( e, X3 w
第14章 信号量、共享内存和消息队列 488- Q& x; I3 e' R/ R
4 b- ]  r, d0 w; I# |- H" [2 E- m
14.1 信号量 488- |3 Q9 X! c! N' }+ M/ E! g2 ~9 B
14.1.1 信号量的定义 489
6 r4 h  d! u/ E3 a14.1.2 一个理论性的例子 489
7 L# a& i4 G7 Q14.1.3 Linux的信号量机制 490
) i) t0 K; d* Z" H  i; f14.1.4 使用信号量 492, m' ?/ |$ }& ]* u( v9 l
14.2 共享内存 496. f- f8 s" M* {3 }/ Z0 |& e! X5 I
14.2.1 shmget函数 497
$ u, N- h: M8 c* ~14.2.2 shmat函数 497  j& w% K! M; l9 D: X3 @& Q
14.2.3 shmdt 498
8 p# _' ~$ y8 V) x1 {4 a14.2.4 shmctl 498) n4 M6 C- O( ~7 R7 I  B
14.3 消息队列 502- k# o3 P$ t( c4 h
14.3.1 msgget函数 502
# j: b7 _3 r- S; O$ f+ E14.3.2 msgsnd函数 503
2 J7 k8 s6 n  @14.3.3 msgrcv函数 503" C/ V& i) n! U0 N" b5 {3 G
14.3.4 msgctl函数 504: q' m/ n, q: T  Y
14.4 CD数据库应用程序 507  C' ?' |2 r7 }4 O, X: C* u
14.4.1 修改服务器函数 5075 q, C: B5 n) o/ a# \0 E2 |
14.4.2 修改客户函数 509
& U5 e' r8 r9 x/ u) I! Q: C) ]# J+ @14.5 IPC状态命令 511
+ q! C3 ?9 Z6 o( B# Q% q14.5.1 显示信号量状态 511
' |1 G4 x+ [/ [/ O' z14.5.2 显示共享内存状态 511' b6 Y: ^' t8 C0 C% g
14.5.3 显示消息队列状态 511( p: \; ]. H7 C0 H
14.6 小结 512
$ j1 k, z3 `* I# `$ Y1 `
. H0 |( R& y, C0 \# p- p" f第15章 套接字 513
5 F, L0 O" K' H5 I' N
+ T$ l0 Q6 n9 O# H7 o5 a0 f15.1 什么是套接字 513; r  S( `: ^7 s
15.2 套接字连接 513
( t: v, S: N& w# s15.2.1 套接字属性 517. t- x7 K( d7 S  Y
15.2.2 创建套接字 519
6 R+ n6 j. ]. [15.2.3 套接字地址 520
& T9 t3 r8 _( S7 ^0 D9 p15.2.4 命名套接字 520
+ m5 b1 h5 U/ X  V15.2.5 创建套接字队列 521
3 j7 U/ j% o! E$ P5 Y. Z0 Z& m15.2.6 接受连接 521
) R$ T+ s6 J* f4 Y15.2.7 请求连接 522
: d: [: J& H/ I15.2.8 关闭套接字 523& _) L. G+ S5 i# L# S
15.2.9 套接字通信 523
/ g- j5 s' W. }' Q" }% l15.2.10 主机字节序和网络字节序 525
0 v8 m2 F# N* u& D* [- G" S6 I15.3 网络信息 527
) m6 a0 J( H9 H! N% o- M6 J15.3.1 因特网守护进程(xinetd/inetd) 531
3 x% l6 i2 z5 k% b$ I15.3.2 套接字选项 533
1 v4 s8 e3 t: _. _15.4 多客户 534
5 E2 r; e) }) o2 J9 S. j) W0 x15.4.1 select系统调用 537
) z+ E! z& m) c+ `( U15.4.2 多客户 540; X2 K8 V4 L* `: Y+ u6 a& m9 i
15.5 数据报 543
3 d& ~$ y0 ~$ ]# q15.6 小结 545
# L. ]5 `  I# I- }" [
7 k* t" ^) L$ R  w+ M第16章 用GTK+进行GNOME编程 546# q. }9 a9 [+ C: O/ H  c9 a

$ R4 _0 C2 l. {6 S/ C16.1 X视窗系统简介 546
5 R- A8 b+ u( ~( Q16.1.1 X服务器 547& b/ O4 f( Y. E
16.1.2 X客户端 5475 E, p" ^7 {: s) r
16.1.3 X协议 5477 S4 ?* e4 O0 V5 o3 |+ a
16.1.4 Xlib库 547  P. F. M# f0 o  B; |' `
16.1.5 X工具包 547* c$ I" O. U) h# a; d8 v& e8 I8 o
16.1.6 窗口管理器 5488 I' X; }3 ?* q" V8 m9 ?
16.1.7 创建GUI的其他方法——平台无关的窗囗API 5485 w; r' M) r9 [) U
16.2 GTK+简介 549
1 _* c& n8 I! A0 _3 W* L16.2.1 GLib类型系统 5497 k; F0 F% G# w& G, N8 Z5 g# R" L
16.2.2 GTK+对象系统 550; F/ Z! d; z! u9 Z/ R
16.2.3 GNOME简介 550. {5 b- }3 k3 w2 F2 j) C
16.2.4 安装GNOME/GTK+开发库 5514 F( H/ i( h" {% E  q5 W) u, S
16.3 事件、信号和回调函数 5549 v9 n- U4 |$ T% }; \% X) t
16.4 组装盒构件 556' Q5 a# c: U6 C* P4 y; Y) k+ d
16.5 GTK+构件 559
) u) E2 H5 V# t' b16.5.1 GtkWindow 559  n& ^& ]6 B. a/ Z
16.5.2 GtkEntry 560
* g# u, w8 H9 p- s' P2 d! \, e& F16.5.3 GtkSpinButton 5632 c) p! L- x& X. Y' ]' D3 c0 A5 S0 o5 m& `
16.5.4 GtkButton 565
3 H# m5 Y! a+ ?: I  ?, F  K; [: a2 d16.5.5 GtkTreeView 568
& J' P  L/ t& d) v- j( r% V16.6 GNOME构件 571
3 M5 M- I% i- P' ?$ }2 f1 Z, F16.7 GNOME菜单 572
" k6 l' N4 @* ]. f16.8 对话框 5765 I4 X8 s$ C  x! j) Z3 w' `
16.8.1 GtkDialog 5772 J: R0 K# }0 m$ ~
16.8.2 模式对话框 578! B4 W7 Z; G+ g1 Q3 y
16.8.3 非模式对话框 5796 j1 ?& M: d4 z4 r5 L1 a
16.8.4 GtkMessageDialog 580. A( g' w# `) _/ @& z6 w6 c: d
16.9 CD数据库应用程序 5819 c: A1 c' [( d- j: D
16.10 小结 592
5 ~0 f# t$ ]) Y1 M% E
  X2 M* h4 J, a. m第17章 用Qt进行KDE编程 593
7 f! H" u) h' q0 f) D6 R- R" C2 w, j4 R- C& o9 R+ S5 K5 H( v% m: y8 k
17.1 KDE和Qt简介 593
! ~0 \( M# {& e) C. m- \17.2 安装Qt 5949 G, r1 @/ P( N
17.3 信号和槽 5963 c1 J/ t3 J- g7 a3 b( F  v9 V
17.4 Qt构件 602/ _8 }7 D7 E4 g* M" g
17.4.1 QLineEdit 602/ Z, m! G( K4 d9 T& Q
17.4.2 Qt按钮 605
8 P5 U6 t5 Z2 `6 I# X17.4.3 QComboBox 609
/ ?  m& g3 i% F/ {* V- F17.4.4 QListView 613' u  K" n: ^/ R1 j8 q5 R
17.5 对话框 615- u2 }3 S- |* ~+ C& z. i4 s
17.5.1 QDialog 615  c" ]! [# L" I8 y
17.5.2 QMessageBox 617
+ f3 W) b2 [6 F6 H2 A( v( u3 u' _17.5.3 QInputDialog 618
1 A4 b% R) `+ V. y4 X* Z. F7 ]! _* ~17.5.4 使用qmake简化makefile文件的编写 620. E' K) R$ G2 t' [
17.6 KDE的菜单和工具栏 620
2 n+ u0 A! b7 V: M) S* e! p* ?17.7 使用KDE/Qt编写CD数据库应用程序 6249 c4 w- a7 B2 u7 z# `: ?  t
17.7.1 主窗口 6249 l$ ^2 G6 |; J: S. ]
17.7.2 AddCdDialog 627
, c' j4 L. f  J  e0 O( f" D" Y& ^17.7.3 LogonDialog 629
$ H% X9 b* w8 D  t17.7.4 main.cpp 630
9 L3 u4 A) ?" q9 a17.8 小结 632. c+ R8 l% U& Z; @! }
  P  {* h& n+ Y/ U
第18章 Linux标准 633: Z0 X" L" V: ?
- e5 }( x. N' Q* @4 |
18.1 C编程语言 634
7 v& u) O0 Y# x7 O4 x" `18.1.1 发展历史简介 634
. S% s# _0 g, T# q( ]18.1.2 GNU编译器集 634
/ b" P. P/ c0 b, ~  q, i18.1.3 gcc选项 635
5 O1 i) P% x! }5 }' U18.2 接口和LSB 6360 H9 m4 k9 w8 q& Q, v
18.2.1 LSB标准函数库 637
8 Z! ]" x. G- Q4 j+ O18.2.2 LSB用户和组 638
) \" X& M- r( S2 j& I8 w  a' K18.2.3 LSB系统初始化 638+ ?9 h. f; [1 s( _) `
18.3 文件系统层次结构标准 6397 V6 C! Y- |2 Y  _) W
18.4 更多标准 642
' A$ W7 v1 l4 Q$ z; C18.5 小结 642
' ]4 T* f& s8 k9 P$ {' h, U
* ]1 B* ?8 j" `4 W% y, m
$ L) [; V- P; k; n" U5 G* ]

评分

参与人数 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 | 显示全部楼层
看起来是不错啊2 ~. h2 h& {1 P8 I1 D. ]
想知道小甲鱼最近在做啥?请访问 -> 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 17:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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