鱼C论坛

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

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

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

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

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

x
TB1SlhmMpXXXXX7XVXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg

# b8 b( {$ G# k6 \9 E' G8 l" Y% F0 ]% B7 F- A% f  W5 u  M
书名:《Linux程序设计》% r4 N  p2 D" m2 U4 H, s
作者:马修 (Neil Matthew),斯通斯 (Richard Stones)
) Y' z# Q: Y, ~( X) ]译者:陈健,宋健建 , H5 `' v+ V' m* X$ W
出版社:人民邮电出版社
$ x( R, y9 {# A6 n出版年:2010年6月1日(第4版)0 X* c7 g4 N" o1 |! x5 J
定价:99.00元2 k2 i# G2 S" b. c7 K' r& p
装帧:平装
: R/ u1 ?. q& ?% U# uISBN:9787115228215
* B2 Q1 S" S& l" F2 k# T& u  h; ^7 b/ m4 `( X, O0 @( b
购买链接:
% W4 G) T' x5 {/ |5 f* R  A% ~8 A) X; I0 \


6 E0 K" @4 Y+ ^* `' s- b亚马逊(Kindle)-> 传送门
/ Q- y, k" k6 f6 x$ q; W/ p" [
2 S  I+ @- V: Z+ D! r7 z亚马逊 -> 传送门2 u/ U9 g2 ~* N  q" ^+ X& m, L

+ R7 u" C; u2 Y当当网 -> 传送门! r5 X' U9 j5 B/ N4 k  P
# h) b8 T$ n- M4 }- r# |0 I
京东 -> 传送门' e( S. V+ ~2 O

* d! f9 t+ a$ C3 _天猫 -> 传送门
0 v* F) j! Y$ ~# j3 g' \, R# j0 c6 a- R# s4 Y( G

- n5 O; t& |. v& w内容简介:+ p0 ?& [1 j9 d

3 `" @5 O/ A3 S( \5 Y  G

6 _% Q0 m2 j. V  U《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。& e9 e; {1 B' V  S: W5 N1 }

- o- ~# a& D& Y; F6 h% ~' |' i《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。* F% b: m7 w8 p+ y6 z! v& [8 E

0 |) b( w. ~2 ^# x) ]; p
, G& x$ t7 u+ S: W8 }目录:
+ n  D# \2 T4 a( u6 d2 ^+ F
5 m& Q4 ~0 `6 ?" D2 v& K

' |7 ^# d" a1 f# h第1章 入门 13 a( u6 Y- w5 D3 \! B+ {! `: T$ _
  y% o# S! T" x9 t
1.1 UNIX、Linux和GNU简介 1" Y8 J8 u: p* G- u
1.1.1 什么是UNIX 1; ^1 z$ D" W( k
1.1.2 什么是Linux 2
6 T: P$ K* M( w% C5 y1.1.3 GNU项目和自由软件基金会 3' D* g- E0 d  @1 H" |/ Q
1.1.4 Linux发行版 3
  f% ]9 x' ^; ~4 z& k! t1.2 Linux程序设计 4
* b- R9 F3 H+ m0 @1.2.1 Linux程序 4( M5 H8 X0 |: Q. I3 V
1.2.2 文本编辑器 53 q4 |* I# n: N) x0 d# U" j7 @
1.2.3 C语言编译器 5. ]) @9 h1 z/ U) s$ [
1.2.4 开发系统导引 7
6 }# R, X" I, Y1 G2 `1.3 获得帮助 12$ K) n& u+ Z% g+ ^2 G* H
1.4 小结 14; v2 a' Y: H: K  ~( N# I

# ?) k; }9 o9 j9 K1 |第2章 shell程序设计 150 B5 g2 T* d  n# E, ?) L
/ }/ l% e0 y+ N% j8 {$ ^6 V
2.1 为什么使用shell编程 15$ o+ c4 z9 v9 K2 g1 f
2.2 一点哲学 16
! g3 O2 _( k  s7 x2.3 什么是shell 16
6 j2 m% W$ p+ o2.4 管道和重定向 18
  o. t1 A$ a  @  {; C% A2.4.1 重定向输出 18* R" a! H+ {) X
2.4.2 重定向输入 19
' ^5 [  w2 I6 q0 G& S: c& D2.4.3 管道 19
3 K2 ?" P, x/ b3 }& U) P2.5 作为程序设计语言的shell 20
2 `: I) C1 E8 O! B1 _* m2.5.1 交互式程序 20
7 R8 n/ H4 @- Q0 Y2.5.2 创建脚本 213 }5 r2 I$ D$ S$ U
2.5.3 把脚本设置为可执行 22
, i6 s& n$ I- a- f6 t2.6 shell的语法 23" W# O/ v8 x6 k; l5 \# }
2.6.1 变量 236 M* r  H6 }6 K5 U
2.6.2 条件 27
$ ^# Q0 v1 j& v: g% e8 l2.6.3 控制结构 29
0 S7 ?+ O% ?, @" I2.6.4 函数 39
2 w0 X- x2 K# D7 l2.6.5 命令 425 C! n! M& [" [# Y0 k2 U/ L
2.6.6 命令的执行 58) O2 J1 p: ?3 f7 t5 A0 d. a
2.6.7 here文档 61$ S0 J2 S4 F$ Q; f
2.6.8 调试脚本程序 63( b, \: f' t2 G) H
2.7 迈向图形化:dialog工具 63* Q* ^0 `9 w2 p
2.8 综合应用 68" w8 ?1 B3 ?  v1 |' I! L
2.8.1 需求 68. U+ j8 C9 T5 Q, K! N
2.8.2 设计 689 r& f/ _- U6 D
2.8.3 应用程序的说明 76+ U9 v1 T# E% `& g$ @$ b
2.9 小结 77
) [' Q7 `8 q  ~
0 S/ X4 E2 }; J5 L! `第3章 文件操作 78# ^4 W& _6 o1 U8 \% l
1 @& q/ G7 q7 ]2 G
3.1 Linux文件结构 78: D! {# z' O9 ?( j! {
3.1.1 目录 794 Q  V- ?. o% \4 a% Q: H4 G5 y
3.1.2 文件和设备 79
. \% b' E! J; Q3.2 系统调用和设备驱动程序 80; |+ h# O; j- E9 L
3.3 库函数 81
: R+ }; g  C  {) Z3 [3.4 底层文件访问 82
$ q8 {4 ?( `& l& |3.4.1 write系统调用 826 t( |1 {* z3 {( U
3.4.2 read系统调用 83
# f3 ]* t+ t  c; `4 a/ ^3.4.3 open系统调用 848 p$ [4 y) h* r) K
3.4.4 访问权限的初始值 85, v# V1 ]2 }! T6 g
3.4.5 其他与文件管理有关的系统调用 88. j* W0 A+ i1 \/ j$ L# T
3.5 标准I/O库 91
+ A+ F8 w9 [1 ~+ a$ b. h3 c3.5.1 fopen函数 91
+ _: l9 c# z. P* X  u6 i3.5.2 fread函数 92
2 K& ]) g5 V1 T+ w- n2 Q9 m. t3.5.3 fwrite函数 92) Z$ X+ P! L. R
3.5.4 fclose函数 92! a: W' N: H) x0 k. M; J# y
3.5.5 fflush函数 93
# p& \& R% ?! @) G% W3.5.6 fseek函数 933 f# Q6 U. \3 k# Q2 ]" a8 v8 u) P
3.5.7 fgetc、getc和getchar函数 93, s0 {0 ~$ |' v' Z3 R( o8 \; ]8 ^% ^
3.5.8 fputc、putc和putchar函数 94
& m; r7 p. h2 T# d3.5.9 fgets和gets函数 94
& \6 P& i. n- u5 b3.6 格式化输入和输出 94% c  R( P6 y0 {  a- _
3.6.1 printf、fprintf和sprintf函数 94
) v8 Q& G! g  W# W; H1 M9 _7 C3.6.2 scanf、fscanf和sscanf函数 96
8 x" _* m* U5 y. S4 k: _2 g1 Y3.6.3 其他流函数 98
- z" n; a  _" A3.6.4 文件流错误 99
: ^  F) s' A7 Y  I) y( _2 D( X# `3.6.5 文件流和文件描述符 99
9 K% Y3 G3 e* f% m3.7 文件和目录的维护 100
( E$ h3 ~4 D: A/ B, N6 p3.7.1 chmod系统调用 100
  n/ V- V8 C- Z& ~& W% z3.7.2 chown系统调用 100
; y' |6 \& p4 d6 R' j3.7.3 unlink、link和symlink系统调用 100
; p, e! t& w, v3.7.4 mkdir和rmdir系统调用 1015 x% C" D  `8 H0 h/ `- a6 _+ P$ n- E
3.7.5 chdir系统调用和getcwd函数 101* w( h! U2 P7 @- s# K( ^( o
3.8 扫描目录 102# s, }$ a( y- G
3.8.1 opendir函数 102
) A' |: Z, {0 H% t3.8.2 readdir函数 102- W: a8 p. I/ b: J
3.8.3 telldir函数 103
& |! W" o0 ?7 u. Y* c$ Q$ s2 H. |4 z, L( i3.8.4 seekdir函数 103
0 v1 u0 ]1 {3 M0 T# n2 j1 h8 ]3.8.5 closedir函数 103
5 ~% G9 j, K! u, s  P, [4 t) L6 f3.9 错误处理 1068 g2 y: i. |" I  `  T# @, p
3.9.1 strerror函数 106$ ]  B; `: t, u) }5 s& U- H3 B% k( b
3.9.2 perror函数 106
) Q5 c0 r! \) w2 c% P6 I$ v/ k  [3.10 /proc文件系统 107
- p9 H+ P- m' D7 Z7 E$ t, ~3.11 高级主题:fcntl和mmap 110
; o9 l( Y+ m9 B; e2 z3.11.1 fcntl系统调用 110$ m& [  s5 A' D4 }0 r
3.11.2 mmap函数 111
& a6 o  ^$ {- _- \3.12 小结 113- X- Y; f$ l( B5 Z$ ?! ?4 @3 @
; a5 {3 B8 u$ ?; Y" R
第4章 Linux环境 114
8 j' l! {5 p7 T$ A! V: U
: Z; \/ M& q, n+ \4.1 程序参数 114
, R1 |2 K+ T% T& o4.1.1 getopt 116! m  H0 ^) t5 D. q0 I. `, T
4.1.2 getopt_long 118! N4 c* g. z! _- _
4.2 环境变量 120
; D, h2 q& n4 A0 @# y4.2.1 环境变量的用途 122+ V) U+ H( S7 v; w3 K# `
4.2.2 environ变量 1227 L( v8 T5 F9 w1 X! E9 @) D8 M, I
4.3 时间和日期 123
0 N& |2 x- K: v4 t9 A4.4 临时文件 129
2 L& g! x3 G1 K8 d/ t4.5 用户信息 131
% N' `2 J1 z* y* D, h7 E4 U) L4.6 主机信息 134
9 N( Y! m- D3 t+ ]/ F& K/ p4.7 日志 135& o+ b8 I+ w4 W5 b
4.8 资源和限制 139) [* X) w8 v6 B$ N4 b! ^
4.9 小结 143
# I$ C4 C: @9 X 7 J# T; W; D2 T
第5章 终端 1447 ^+ o6 t9 D" N* ^6 e  P

/ \, j+ {! o) M8 t" B5.1 对终端进行读写 144* L  q/ Y9 `) k( s3 @# ^
5.2 与终端进行对话 149
  H+ X5 }! S. r* J1 Q$ O8 Y4 U5.3 终端驱动程序和通用终端接口 151
" V- q% c1 b$ B. E1 t( V3 e5.3.1 概述 151
9 k) t. f" d) P# V2 c9 X5.3.2 硬件模型 151
( _, i  \7 \; v2 c5.4 termios结构 152
! p- k5 @. T  A+ ]5.4.1 输入模式 153
6 [' \1 e1 w; P- c5.4.2 输出模式 154: V0 l1 f! j: R! {& P2 J
5.4.3 控制模式 155$ N1 i- c- E3 e/ @3 r: K/ u
5.4.4 本地模式 155
; O9 B- }* [0 m( q' M: W8 n5.4.5 特殊控制字符 155
1 \5 Q, e+ a+ L! y: f* \5.4.6 终端速度 158; y7 r, v1 j9 w. u
5.4.7 其他函数 159) W: d2 M* O8 Q
5.5 终端的输出 162! I- Y# @" J: k5 G, R" d" _
5.5.1 终端的类型 163+ Q0 o! x/ `, O; _  G; r; W3 n
5.5.2 识别终端类型 163
4 W7 L5 i5 z1 F6 v5.5.3 使用terminfo功能标志 165, F2 e9 I  Y) w) q) f
5.6 检测击键动作 170
; M, G  Q, t( u* \/ P3 V( G5.7 虚拟控制台 172
1 k' I' c8 A% d- o# h/ }5.8 伪终端 173
6 r8 R, A2 G% m5.9 小结 174
& l, [# j7 q  Z" a& ~$ v9 e; C
! q0 U2 T' N7 S+ [0 l! ]' t0 F第6章 使用curses函数库管理基于文本的屏幕 175
/ q5 K* i" |; l% D* ^
( v. F4 D! G6 Z6.1 用curses函数库进行编译 1759 m+ V  w1 K2 e3 N( a! D% N, ^7 x
6.2 curses术语和概念 176; N1 |+ Z7 G3 D7 o) P
6.3 屏幕 178
9 p3 l  i, o: q( T/ A6.3.1 输出到屏幕 179
" G0 S3 W  a/ ?: ]" X9 T: k1 b6.3.2 从屏幕读取 1805 G6 Q+ t; r3 n0 x
6.3.3 清除屏幕 180
: O/ ], @9 C2 g' _- v6.3.4 移动光标 180
: @+ e) Q1 }' h, \6.3.5 字符属性 181  Y/ Q( C8 ^! A
6.4 键盘 1838 [* h) l; m: w5 ^. z, J
6.4.1 键盘模式 183
; D: F9 o, D4 n$ O- `6.4.2 键盘输入 184' {% w8 A& @& F
6.5 窗口 185' S, B% p9 m9 a+ o/ G
6.5.1 WINDOW结构 185" I) m3 u  G/ n0 N1 Y3 o
6.5.2 通用函数 186
7 F) X% K: ]: o. c8 ^5 Y6.5.3 移动和更新窗口 187
* L0 A, c9 ~6 K( f0 ^- x; ?' n6.5.4 优化屏幕刷新 190
* _1 P' x4 t1 a$ q7 n! d$ ~( l8 a6.6 子窗口 191
0 o  N  f% W8 [2 K6.7 keypad模式 193+ w" a9 y: r9 j  G7 K5 E/ b
6.8 彩色显示 195
6 g+ y) P/ v! Z; m7 y- `6.9 pad 198
$ e8 O: d' ~: |5 K/ u6.10 CD唱片应用程序 200
) U* @* s' G' H% R6.10.1 新CD唱片应用程序的开始部分 200
, s3 k5 K0 G7 b6.10.2 main函数 2023 D/ m) o: j: m4 |9 q' ?7 z
6.10.3 建立菜单 203; N; j0 b6 \4 T) M. _( V) W
6.10.4 操作数据库文件 204
+ [4 v- ^, _, g# W% m' j; l4 G6.10.5 查询CD数据库 209/ Z9 S. ~/ w* k0 @6 z
6.11 小结 213
* |$ G0 m% Z; m/ O1 S9 z  L- a# [) ?0 _& u0 u5 G3 L! V
第7章 数据管理 214
2 l9 E& y3 _5 p8 V" ^0 T* I7 M
- I: M- F$ M" h7 ~, d& w$ H: {7.1 内存管理 2143 |/ B2 c( _7 M8 F3 s, D
7.1.1 简单的内存分配 214: N$ f( G5 ?+ a; O
7.1.2 分配大量的内存 215- O* q' j3 q% ^; v
7.1.3 滥用内存 218' z3 r8 K8 F7 @
7.1.4 空指针 2191 K, p8 e8 ~$ z% Y. ]
7.1.5 释放内存 220
! v% [3 F% n* O6 Q' h7.1.6 其他内存分配函数 221
) c0 F. c  B. S7 S- n( R7.2 文件锁定 222
0 V4 a8 {; \6 q* n$ j, v7 V7.2.1 创建锁文件 222' _+ K% E) K( J9 C$ K8 L0 E7 l
7.2.2 区域锁定 225& ~# [( r+ ~2 f+ j* b
7.2.3 锁定状态下的读写操作 227
& n7 k: J+ q- o+ s) s. g- v7.2.4 文件锁的竞争 2325 H, i" L* @5 S) G8 a/ J
7.2.5 其他锁命令 236
# Y! R* ?  [7 c, ?7.2.6 死锁 2360 f/ p2 w! L' v3 M- H) y5 x
7.3 数据库 237
8 P, g" o5 H8 J; e1 G3 n7.3.1 dbm数据库 237
3 l4 e; p; L+ d+ F* A+ ?4 h$ @- [7.3.2 dbm例程 2382 `. N0 J6 e- I( K) C  y5 c# h- D! }- w% I
7.3.3 dbm访问函数 2397 [% C( x+ n( f4 @
7.3.4 其他dbm函数 242
* s2 r0 v7 j/ ^7.4 CD唱片应用程序 244
. x5 r2 G( j. h- Z7.4.1 更新设计 244) X6 F4 i( J* g* ?
7.4.2 使用dbm数据库的CD唱片应用程序 245- I& `! `  m2 j" Y' |. s4 j# v
7.5 小结 262
3 l1 l7 X0 y) x& p  X" l5 E2 [' H1 W# Z9 [1 T; ^0 X4 g7 I5 H5 Y
第8章 MySQL 263' e1 p- M- Z& m4 q0 f$ a+ G
8 v3 C* k3 v- t3 P3 E
8.1 安装 263) D, Z, s( z- K9 l% V! e
8.1.1 MySQL软件包 264
$ n. ^8 \. N- k. Y' y% q8.1.2 安装后的配置 266
  s* S8 }3 A2 g$ Z" ?9 v/ }7 K8.1.3 安装后的故障修复 270
. m/ R* N! x/ X8.2 MySQL管理 270
  n' h1 K  B8 \$ L# @, F8.2.1 命令 270( S3 R2 B2 h+ Z8 Z7 l0 v" q
8.2.2 创建用户并赋予权限 274' ~" S: k& t/ ], H
8.2.3 密码 276
. @8 O" Y! D& A1 i- c  L8.2.4 创建数据库 276
4 X+ i% u: \0 x8.2.5 数据类型 277
' M: m/ @, y% D7 u" z: R8.2.6 创建表 278
5 W" [2 g/ @0 [- Y/ U7 l8.2.7 图形化工具 280
- K, k: t5 z! @) \6 r) b8 u8.3 使用C语言访问MySQL数据 283
/ C/ m8 T' k2 H8.3.1 连接例程 283
4 O( X! K- k# K8.3.2 错误处理 287
& Y, l# y5 P8 B: `1 A& @% u8.3.3 执行SQL语句 288% R  N: ~& i8 i
8.3.4 更多的函数 301
& s0 W  b' F8 `8 \3 m5 e+ V8.4 CD数据库应用程序 3017 B3 X- H2 n0 u# N+ x
8.4.1 创建表 302
- ]7 r" ]8 F& Q8.4.2 添加数据 304- i6 t; ]7 w% H/ l# M
8.4.3 使用C语言访问数据 306
: d' C9 a0 A$ J# c' M% N# \8.5 小结 316
+ j. N+ J5 _+ {" W% N
: @% S+ w& o) F% r+ p9 p0 }第9章 开发工具 317) l5 x. e( }2 y  a$ C0 }) c

/ c  v6 c  K4 L. ?3 Y9.1 多个源文件带来的问题 317; X( O: ]4 B6 U/ w8 ?
9.2 make命令和makefile文件 318, \, G0 O# \( |" y3 J1 j4 x, \& S8 \) ~8 k
9.2.1 makefile的语法 3186 {" \: U2 b$ r; Q
9.2.2 make命令的选项和参数 318
8 J' P9 H! M4 [2 V. j, z$ q  [9.2.3 makefile文件中的注释 321  ~1 b% m8 }5 a* p# W
9.2.4 makefile文件中的宏 321
$ Q# f6 n4 R/ b$ ?$ `( U' z, P9.2.5 多个目标 3234 G+ {! M9 n3 e! x$ J1 c
9.2.6 内置规则 325
- G6 d# K. h% k6 H% {9 ]% @! d9 m9.2.7 后缀和模式规则 326
( V! D& F7 [, @+ Y4 m3 l9.2.8 用make管理函数库 327
  \5 C; A" a" z- ?  k% }  z7 L4 |9.2.9 高级主题:makefile文件和子目录 3291 J6 A( d& @1 x! ^( p
9.2.10 GNU make和gcc 3291 _3 k) z; j, j6 M
9.3 源代码控制 330/ Z0 l3 \6 @  I8 n* k
9.3.1 RCS 3313 |6 _6 c6 l2 O$ l
9.3.2 SCCS 3361 E: L3 ~# ^' v) V! _
9.3.3 RCS和SCCS的比较 3369 ?* C4 A  P- ]) k! t- @
9.3.4 CVS 337# I3 f/ @5 Q( j3 i, ]
9.3.5 CVS的前端程序 340" c. P6 N& Z# E! Q# C' t
9.3.6 Subversion 341
7 x( v8 J( t; b2 `5 s! M9.4 编写手册页 342& l8 r/ d4 E0 r. O
9.5 发行软件 345
1 r# k" B  D7 \: b* H9.5.1 patch程序 345
& J' J7 A3 |" K! Z9.5.2 其他软件发行工具 347
, a6 p1 E  @  m% `+ B* j' @0 a9.6 RPM软件包 349$ p- A  ?  B. _; P0 Q- ^  C
9.6.1 使用RPM软件包文件 349
9 J2 m" m  v- \2 C$ U2 M& O- }9.6.2 安装RPM软件包 350
6 U* V4 J0 |2 Q% a9.6.3 创建RPM软件包 350
' z( W: y- O7 I, {9.7 其他软件包格式 358  S' b% K* m9 I1 Y4 [* b
9.8 开发环境 3581 \) d5 U% \5 ?* Y$ m8 K
9.8.1 KDevelop 358
: P6 x0 x4 J" l9.8.2 其他开发环境 360$ t9 G7 G  n  u
9.9 小结 360
* b  |7 l% b* Y
% M2 c3 a# M$ D6 e; ]第10章 调试 361) d3 q$ H, b3 }! p
* B: y0 S" |  P. H8 g+ F3 [+ K
10.1 错误类型 361
- w9 P% @( W3 F% O: f10.2 常用调试技巧 362- c$ F" h2 _( V6 o6 Y4 y9 u9 L
10.2.1 有漏洞的程序 362# V$ S; a8 L& ]/ I8 ?. z
10.2.2 代码检查 364! V) [1 K  l# r
10.2.3 取样法 365
. T5 W- w9 O- |1 I10.2.4 程序的受控执行 367) [! ]* c( R* R% h) ]' z- Q8 J& J1 o
10.3 使用gdb进行调试 368: `  Y  h9 |- f! H: e
10.3.1 启动gdb 3682 W4 E+ ?# z7 ~. j
10.3.2 运行一个程序 369& }( ^2 s  [  J& X( K
10.3.3 栈跟踪 3691 K* C- f$ s( l
10.3.4 检查变量 370- K- g- r7 b: E. ]- t0 c1 Z: S/ D
10.3.5 列出程序源代码 3708 `" e& J( J0 H* }0 \5 s
10.3.6 设置断点 371
3 K0 a& L9 n: I( a( K10.3.7 用调试器打补丁 374
/ ~$ c" L( u: l3 z+ ?: z2 c10.3.8 深入学习gdb 375
3 G4 x% |# ?1 |: ?$ X, }- V10.4 其他调试工具 375, e' c  `$ d% t1 I- Z/ [+ f
10.4.1 lint:清理程序中的“垃圾” 376
. t0 j" j) R6 {+ p+ C" z6 m10.4.2 函数调用工具 378
* y# v- F! B, `10.4.3 用prof/gprof产生执行存档 380% e8 c2 y3 i$ _9 P( W* a
10.5 断言 381
- n0 p3 h, z) V0 f5 T10.6 内存调试 383
9 c: D; w5 \- d! [& ^8 }3 k- @# i10.6.1 ElectricFence函数库 383+ Q1 i. G' X/ G, }( o5 b5 H
10.6.2 valgrind 384
) w) l. W/ B0 @9 e. w9 [: j- q; h# D10.7 小结 387$ J6 h) ]: R& W( s& a

7 ^) O8 o( F: Z  W4 B% {$ D! X第11章 进程和信号 3884 |* e; c5 N5 `' j
$ b' A- c5 l* A7 w8 r* H$ ?, d
11.1 什么是进程 388
" E0 F5 Z5 @7 \! Y, B; M11.2 进程的结构 388
5 `. g# v* ~3 V4 a8 n$ K11.2.1 进程表 390
0 a" v4 V! W% U2 W+ j11.2.2 查看进程 390$ A! F( l' P' w/ H4 k) A, k
11.2.3 系统进程 391* X! p+ l" Q. n
11.2.4 进程调度 393
) T1 B2 D4 G( m5 z% U5 S11.3 启动新进程 394  S7 A8 B, U; J
11.3.1 等待一个进程 399! @: @# D% c. P' [' Y. s; E+ }0 y7 M
11.3.2 僵尸进程 401
! s/ X# i4 e- j11.3.3 输入和输出重定向 403
* v  b7 B- ~+ o11.3.4 线程 404" l% h0 W' p7 G: _! |" F+ O- e
11.4 信号 404
( Z8 r* L, o( t8 v11.4.1 发送信号 408
* p' N4 A$ A+ B3 N& m11.4.2 信号集 4128 H2 M) J  ?) ^: ~" X
11.5 小结 415; S  [+ S2 R) u5 A; L

% F! a1 i5 X3 s+ a" |* ]第12章 POSIX线程 416
7 J. i9 `' ]* r0 E' H( }: G
0 l& f5 w0 f8 {; T12.1 什么是线程 416
8 _6 Y3 k# g. U2 d  Q' K12.2 线程的优点和缺点 417
9 X$ @+ N1 `3 K" l5 K) Y12.3 第一个线程程序 418
' o! S& |+ x$ ]12.4 同时执行 421
" B7 h7 d1 M2 x2 C# W/ a12.5 同步 423
( T! v6 s0 |2 U! }' z! Z12.5.1 用信号量进行同步 423% C" j( `( s( D4 o
12.5.2 用互斥量进行同步 427
' D/ Q# S& P; g- L+ L$ ?12.6 线程的属性 431+ W. u: e! i9 d2 d( X) }0 \
12.7 取消一个线程 435
4 W- C' B# {# C- _; H' |6 i4 }% N12.8 多线程 4386 v2 a! R; q# T8 i) w
12.9 小结 442
: s; L# b7 Z  y* A
4 v! M$ Q8 n4 F2 c第13章 进程间通信:管道 443
  V( q2 n2 O, B  |+ |/ R
7 ^4 ~* w/ q# y* e13.1 什么是管道 443, G. L& v0 ]( @9 o
13.2 进程管道 444( q! }, f' w6 v) H; M8 {. I
13.3 将输出送往popen 445# Z7 o0 z2 R$ v
13.3.1 传递更多的数据 446" e1 V0 U2 }- ]  ]; }
13.3.2 如何实现popen 447
! ]" i6 Z; j5 u# b  o; a13.4 pipe调用 449
, y6 X1 E' z  A13.5 父进程和子进程 451
2 s  r5 e# f5 p3 F0 k; C4 V9 g13.5.1 管道关闭后的读操作 453, P" ^5 C# c# P* Z# _
13.5.2 把管道用作标准输入和标准输出 454
' m& z/ `% ^) j0 c  X13.6 命名管道:FIFO 456
! u& s7 U2 @5 q; d. m1 h8 d' l' r# B% |6 c13.6.1 访问FIFO文件 4585 V) }2 X# g7 I% o
13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464
+ d! w. b; a3 V& p  z13.7 CD数据库应用程序 468
: }0 l7 z/ C. I$ Y* _: `13.7.1 目标 469+ h0 e, D& v* v6 z# }+ ^
13.7.2 实现 469: u4 z$ X( i4 ]
13.7.3 客户接口函数 472
: _1 V  z# Q! K$ r6 {5 r! }13.7.4 服务器接口server.c 478
# N8 _1 o- U2 X13.7.5 管道 4810 ]4 L7 ~1 R$ C4 o- K4 E& z7 B
13.7.6 对CD数据库应用程序的总结 487+ k& d- z$ F! }5 O  L6 G* `
13.8 小结 4878 P" Z1 a: W. X8 L$ c

1 |/ }" K# c3 K7 }8 ]第14章 信号量、共享内存和消息队列 488! c, }. J, c1 M
7 D, N7 e$ c! u' |, F$ V! |+ L
14.1 信号量 488
8 u6 w% S/ t3 A5 l1 b14.1.1 信号量的定义 489
: j0 o) G1 y. n14.1.2 一个理论性的例子 489
- a7 v' W5 s' d' s6 S14.1.3 Linux的信号量机制 490
, ]7 ^% y* ^# e# o4 A# ?( l$ x. o14.1.4 使用信号量 492
5 h2 T$ c9 F9 ^# n  T: x3 \14.2 共享内存 496; Y( p8 \) _% [7 u9 N
14.2.1 shmget函数 497/ h) }9 [) g+ ?- I
14.2.2 shmat函数 497
1 N) `$ X) H# D' H" z8 z7 g4 ?14.2.3 shmdt 498
1 @% ?+ h! T3 f: R2 U14.2.4 shmctl 4981 S; p' h% Q6 k/ R9 d
14.3 消息队列 502
" }! l9 w2 n- Q8 w5 y2 O, X14.3.1 msgget函数 502
$ E  |) Y6 d) a1 R, T14.3.2 msgsnd函数 503
8 V9 _/ c% [4 W- n3 O14.3.3 msgrcv函数 503
+ J6 J" _7 C' @, d! t* g, F14.3.4 msgctl函数 504
- B' O: n$ [: }" j14.4 CD数据库应用程序 507
5 C! B7 H; Y3 a% U3 a' j14.4.1 修改服务器函数 507; L  L+ H* @0 l, w
14.4.2 修改客户函数 509
% M) D1 S. ~5 U4 Q- z& c14.5 IPC状态命令 511
& o$ K+ y' W7 S  R7 X5 Z14.5.1 显示信号量状态 5110 r8 F" y  t1 }9 J( f* Y3 H
14.5.2 显示共享内存状态 511" f5 j% k# ], r7 @" p5 w/ w+ E3 R
14.5.3 显示消息队列状态 5118 ]+ S( Q6 X. C8 m7 |
14.6 小结 512# a7 f& J- F' n7 M$ c
2 r* M# w" y; Z# \/ }
第15章 套接字 513( G% l3 }9 S) X# e% m
( U" n0 F3 b* T2 [" _
15.1 什么是套接字 513
1 f' m9 U! H; z& H! `4 d' }( i15.2 套接字连接 513, e! \: ^2 ~  y1 J' h  f4 g
15.2.1 套接字属性 517. c: X( {0 n' \4 @% Y5 D! |
15.2.2 创建套接字 519
3 }. k! R4 Y1 P+ A5 {' |4 J15.2.3 套接字地址 520
+ l0 }7 F1 ^6 K' z* `15.2.4 命名套接字 520# M: |5 b+ D$ f2 L- o+ H. }5 ?
15.2.5 创建套接字队列 5211 {& G2 S! Z0 c. w( F
15.2.6 接受连接 521. y) t3 T7 H, V& u; Q' Z
15.2.7 请求连接 522/ z$ h# a  f- U
15.2.8 关闭套接字 5234 E8 K% Q. F# n. T+ u% c* a3 W
15.2.9 套接字通信 5233 C  r4 q3 Z  c6 s" L
15.2.10 主机字节序和网络字节序 525
! e4 b& p, n/ R. n$ j15.3 网络信息 527
( ?3 V/ e- N" m* S15.3.1 因特网守护进程(xinetd/inetd) 531/ e- \( y1 f; q8 P8 y  ~
15.3.2 套接字选项 533, C$ j& I4 q- ?( Y# @) @
15.4 多客户 534
1 v1 i3 n; d; r15.4.1 select系统调用 5374 m5 b) F/ `& g# s1 |( f
15.4.2 多客户 540
1 H4 P, y( g* b0 S" k9 }15.5 数据报 543
, r. y2 N/ m# S  F! w15.6 小结 5459 n0 d! G/ O6 P0 x+ U, s
( B3 j0 [/ q' U$ z
第16章 用GTK+进行GNOME编程 546
( ~8 ]% Q2 L& t& V2 W& r8 ~% G; G& D( ?1 a; d
16.1 X视窗系统简介 546
- Z7 t( y% X% G# ?8 U16.1.1 X服务器 547
) e8 t3 P7 l5 {7 h- Y16.1.2 X客户端 547
" t# V* T/ d  a$ H  ?& h& q16.1.3 X协议 547( ]; y% X+ E5 ^& y
16.1.4 Xlib库 5476 v0 t5 K% V6 |$ x3 L) ~
16.1.5 X工具包 5472 v* I; }3 ]5 z5 ^9 h
16.1.6 窗口管理器 5482 h6 K  F( l9 d0 T
16.1.7 创建GUI的其他方法——平台无关的窗囗API 548
% p& k. I# ^0 n+ t16.2 GTK+简介 549% n9 a& |4 ~6 H! C3 U
16.2.1 GLib类型系统 549  g7 s* ]1 R9 y8 X1 X* @
16.2.2 GTK+对象系统 550
9 ]1 k0 u) G# E* e& W16.2.3 GNOME简介 550! `7 j( d7 T8 K, a* a& O5 G
16.2.4 安装GNOME/GTK+开发库 551
8 }7 w) i; I: w* }+ ?) n" a16.3 事件、信号和回调函数 554
& S& x- `; w# M# I( E$ _16.4 组装盒构件 556+ }3 |$ f0 p# I8 l% T! P
16.5 GTK+构件 559
, ^: p! F9 ]8 A# L: h16.5.1 GtkWindow 559
1 A, a4 w0 j; h8 `3 k16.5.2 GtkEntry 560
3 P, w! d% d+ n+ H+ E: S# O16.5.3 GtkSpinButton 5631 ^" \0 Y% L/ E, u
16.5.4 GtkButton 5655 _+ @* g- m5 u; _
16.5.5 GtkTreeView 568' {5 I  h4 A0 u# a1 v3 ]% c; b
16.6 GNOME构件 5715 j5 @* M/ U. G
16.7 GNOME菜单 572
" O1 U% v+ ?$ ?16.8 对话框 576
& p9 P1 t5 t8 U3 c2 {2 H  b3 o16.8.1 GtkDialog 577
1 [; M, y7 W/ X+ N$ |16.8.2 模式对话框 578
$ w/ R5 C( W2 q1 o" i16.8.3 非模式对话框 579
; Q% E( d# g  i8 J  D16.8.4 GtkMessageDialog 580
4 G$ c6 }' t7 C1 s+ `16.9 CD数据库应用程序 581' G6 x/ G! G& w$ N0 r1 t
16.10 小结 592
) f4 B8 Q* e' O/ R# a* P% g8 p. \8 M9 Z* [, `$ J, E9 G5 A0 j
第17章 用Qt进行KDE编程 593) I( W  j1 Y1 d( g- |5 t6 S

/ d+ Y8 w. p5 M9 v  G, p9 n17.1 KDE和Qt简介 593- K* `# v8 ^8 f* d- }: @/ J# j5 Y( C
17.2 安装Qt 5940 L! E$ B5 b/ x1 R7 J/ b* A/ W8 d
17.3 信号和槽 596
* `" @! f* {: w, a% Y- G17.4 Qt构件 6022 o: }5 A% b- f. Y6 H& T
17.4.1 QLineEdit 602
% U6 i/ ?  e( C$ B) ?+ K7 }* L17.4.2 Qt按钮 605
$ V; c5 _0 b. p7 [. N$ K3 ~17.4.3 QComboBox 609
; D$ n1 k3 n) p) O0 J7 J( _( n: G17.4.4 QListView 613# O+ h- n6 P7 {1 I9 P! y
17.5 对话框 615
5 y: p* }, E8 w1 P17.5.1 QDialog 615
8 D9 g6 \8 G/ [4 l: R) _! a. Y2 [/ ?5 l17.5.2 QMessageBox 617
* T8 I* j) c& h7 @& g5 m, ?17.5.3 QInputDialog 6187 f$ [( \6 r- h
17.5.4 使用qmake简化makefile文件的编写 620
* b! ~! b# k& H1 v17.6 KDE的菜单和工具栏 620
3 V6 O* |% F+ V. k! p# C0 I# Z17.7 使用KDE/Qt编写CD数据库应用程序 624
/ l9 D' ~& m) Z8 r9 @$ g* V17.7.1 主窗口 624! b) k2 Q8 W6 F* i- h
17.7.2 AddCdDialog 627& r( E9 {8 e" e- ^& K8 W
17.7.3 LogonDialog 629
/ ^+ E% v4 G3 A# ?/ s4 g! j17.7.4 main.cpp 630
% ^* R* O" G3 f+ G17.8 小结 6325 V, l4 ^0 x$ D1 |% ]5 U% ^
2 @: h- I4 F* G6 A" k; f
第18章 Linux标准 633
7 U% E$ [7 d) e0 s) g$ S4 }
) l  T0 l& U9 a& a: j18.1 C编程语言 6343 [/ ]) Z# N* a4 A& \
18.1.1 发展历史简介 6343 X. s# U2 D2 D4 W+ w7 u
18.1.2 GNU编译器集 6340 \1 w4 P. p- Q" C! b$ V$ Y1 W
18.1.3 gcc选项 635
" ]3 N: w. E9 b. t2 q5 d# c18.2 接口和LSB 636$ X% V! G3 |3 M: N3 A& Y$ t
18.2.1 LSB标准函数库 6371 q! a& u: l# d/ t
18.2.2 LSB用户和组 638
6 H/ G4 I( g' @& K18.2.3 LSB系统初始化 638
# P* N. v/ |+ D* P0 y  A1 I18.3 文件系统层次结构标准 639
* Z+ p7 K  ^2 b. ~; j/ N; @18.4 更多标准 6422 q, W$ P8 U( y# M( ]
18.5 小结 642
( n, Z7 @6 i' _. e2 z
* U2 E3 C# B+ ~5 a/ _
& ~6 i/ `5 S% e! ?1 J8 y0 o

评分

参与人数 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 | 显示全部楼层
看起来是不错啊# Z# G& a) p0 ]; u" v  ]8 a
想知道小甲鱼最近在做啥?请访问 -> 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-23 21:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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