QQ登录

只需一步,快速开始

搜索
【活动】边做笔记边学习,还能赢取奖学金!
查看: 917|回复: 1

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

[复制链接]
累计签到:2151 天
连续签到:8 天
最佳答案
138 
发表于 2016-11-18 17:43:52 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
TB1SlhmMpXXXXX7XVXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg
& S( g: ?$ p% p! F1 K

/ `" L' w0 e) |& I, H书名:《Linux程序设计》) O7 X# q6 O9 Y% P7 A& S
作者:马修 (Neil Matthew),斯通斯 (Richard Stones)
, I( N' {1 W8 J. L! |4 h# s( e6 m译者:陈健,宋健建 0 I- l1 F5 ?/ x4 R
出版社:人民邮电出版社" G8 v# O$ ^, L- r$ [4 g
出版年:2010年6月1日(第4版)3 J3 h+ J7 f8 m9 M- @" }( P+ F
定价:99.00元# V; C' W/ l5 s, s' {( V0 Z4 b
装帧:平装0 F' u0 W* f' G# H- G$ B* S1 }# |
ISBN:9787115228215
& Z5 z  n1 G! q6 D( f8 y% G0 [5 Q$ A. u. N, E* b
购买链接:7 ?5 z) G% l+ p$ w

) M1 S1 o9 A7 w! e; A6 }" v

/ @, Z1 Z4 O. v4 Z# q: T' \亚马逊(Kindle)-> 传送门- M, r- s: K% O
# X6 W6 j( D" i, u: R* s
亚马逊 -> 传送门
) F# \3 y/ x+ G+ Q- B6 \; M6 t: s0 s/ G- [7 h  l
当当网 -> 传送门- f% t8 N. |% o  F$ }4 B2 N

+ U/ ^" c' J# W7 H京东 -> 传送门
9 U8 P4 r) f2 ^2 y7 m! Q4 G0 n5 v0 {4 E1 \- c4 C4 B" ]
天猫 -> 传送门( [) T/ v  k# J! d8 I
+ R( e8 L! t- c, J9 v
7 g1 M* m+ b( \) L* ~
内容简介:9 Z7 ]  H) \/ ~& y+ X0 z% @
1 H; T, @$ Q1 I1 h


( `5 E: g4 _* w  S1 c《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。3 r) M& i% V$ R% |
* T+ w, M0 R- i, L
《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。; ^- J- c2 Q# I6 `4 j0 n% q- X

+ p# ?" Q/ ]% E4 m5 \. ~0 r+ L+ C" y# b
目录:
6 d9 ?( ^5 [$ F* x: H7 [6 s+ G, L
7 R7 o4 a1 w5 \# A
4 {5 R4 v: c0 U
第1章 入门 13 K+ O* t) ]9 s/ A  M
9 I0 ]) E: D2 o& T" U5 _. e  a" H
1.1 UNIX、Linux和GNU简介 1) w% Z  w9 A! _4 y( B0 o
1.1.1 什么是UNIX 1* |  \- b7 O4 C. H2 X3 c) Z3 ?0 u' s
1.1.2 什么是Linux 2$ n8 x' z1 `. Q0 ?
1.1.3 GNU项目和自由软件基金会 3
6 ^: z) D, O' l' _8 e1.1.4 Linux发行版 3/ [7 b! M+ ?9 S$ k% m
1.2 Linux程序设计 4& ]3 G7 h2 l% p; V- w( I5 @# q9 u
1.2.1 Linux程序 44 ], k2 @7 j8 W1 h
1.2.2 文本编辑器 5
$ f' c. ?4 o. Q; b2 e# }1.2.3 C语言编译器 5
9 B! K( [4 z, a+ `* L1.2.4 开发系统导引 7
( m' G  M5 B9 I' `- d! K* l1.3 获得帮助 12
. i8 ^. C; t3 h, [9 Z; j1.4 小结 14) n7 s( m. c& i8 t, Q

% u( S! P0 s6 L5 X& f8 J) l* W第2章 shell程序设计 15
. N2 _9 [+ T# _* [% v3 A* `+ \- r$ R. X( g' |. q& }
2.1 为什么使用shell编程 156 \! ]( d9 p  R& H# e- @1 V- J
2.2 一点哲学 166 @! ~# I; d( ]
2.3 什么是shell 16
+ L3 {  s' a  B- T2 E2.4 管道和重定向 18
4 @" D; O7 ^) t( l' L0 b& d3 n, e2.4.1 重定向输出 187 O' z* `0 ^5 r$ p$ t* E" B
2.4.2 重定向输入 19
2 H/ f) `7 Z5 w: i% `3 _5 W2.4.3 管道 19; @1 `+ C' h/ J& e5 {( f7 d- S9 c
2.5 作为程序设计语言的shell 20& C) ^: I9 p5 j# o: N  \
2.5.1 交互式程序 20
% ^: o" p2 C/ w. @2.5.2 创建脚本 21
% N( g* }1 J! }' x9 b2.5.3 把脚本设置为可执行 227 R; k7 X8 F% k+ w( b- K. }1 j) }+ ^
2.6 shell的语法 231 J5 _: g( p6 M# Y5 C$ x, d6 J
2.6.1 变量 23
* z6 M8 N' }- J; K: ~2.6.2 条件 27( {5 z& C& U1 J/ h) s
2.6.3 控制结构 293 Y, Q6 X2 X; v+ r6 K! |
2.6.4 函数 39
7 x" D4 G# f$ z" g; s2.6.5 命令 42
4 [3 c  [7 Z" B5 ~9 K' y7 }- V2.6.6 命令的执行 58
  `0 G! b6 o" Z0 k- J2.6.7 here文档 61' i" ^; \9 x* k% \
2.6.8 调试脚本程序 63
* E4 P9 C/ ]. b3 g2.7 迈向图形化:dialog工具 63  A. M' c& _5 E
2.8 综合应用 68
; o3 v/ p4 Z; o" R$ `+ d2.8.1 需求 68' W$ |$ u& x1 G: ~1 U; C) q$ h
2.8.2 设计 68
' u4 a) P# z) P0 n3 ^5 @: m2.8.3 应用程序的说明 76
* z! M& D# @0 z# Q9 d2.9 小结 77
9 d8 S$ j8 V  @
7 f! Y3 w4 M1 _; s9 O# Y; l; ^& |第3章 文件操作 78" q% F  S0 y4 r% R7 Z- o& {

/ O( ~% m5 h8 n& {$ T% q3 c3.1 Linux文件结构 78
+ z6 t5 O- ]( A' Z& F9 w8 M3.1.1 目录 79% d3 C+ h8 I4 [$ S, C$ j
3.1.2 文件和设备 79
7 g0 i7 Y3 h/ m( }' J$ h( B1 Z3.2 系统调用和设备驱动程序 80* \" a/ {6 f# h- c  H# c
3.3 库函数 817 e3 X# v9 T! \: _
3.4 底层文件访问 82
# V; r5 Q; G2 V3.4.1 write系统调用 82
# l& c+ v* ]2 Z/ u3.4.2 read系统调用 83% r$ ]$ {( r& y- C
3.4.3 open系统调用 84
1 k# ~9 k7 V, V! V( z3.4.4 访问权限的初始值 85( K$ e3 w2 o  |) f
3.4.5 其他与文件管理有关的系统调用 88
( c, U* S5 g; i' t- {3.5 标准I/O库 91
# r2 `* |  r* X# z& y$ O3.5.1 fopen函数 919 ~3 K2 ^; D4 r8 @. C9 ]
3.5.2 fread函数 92
: r' g+ |5 C( T, s; ~2 L# Y3.5.3 fwrite函数 92$ z4 N5 ]3 y/ U% }0 ?$ U' c
3.5.4 fclose函数 92
# u# @) d$ ]+ l+ a9 g% K; ?3.5.5 fflush函数 937 \. M4 ?/ U$ @" B/ Z/ W
3.5.6 fseek函数 93- |7 Y! _- Y' ^; |& R
3.5.7 fgetc、getc和getchar函数 93
6 |9 D( p0 S  T" n% n3 V3 _3.5.8 fputc、putc和putchar函数 94, m7 k% t$ T! M8 v% {
3.5.9 fgets和gets函数 94
* m: t. u, w% C: m$ X1 Q1 C) i  F4 n, ]3.6 格式化输入和输出 942 W: H! A9 Y6 w* h
3.6.1 printf、fprintf和sprintf函数 94" W  W8 |4 k9 q- i1 U. M, F
3.6.2 scanf、fscanf和sscanf函数 96
& j9 A7 p7 Q, K4 l1 ?3.6.3 其他流函数 98
0 Y- l) w8 ~. b+ X! @3.6.4 文件流错误 99
5 ~* Y: E, j6 w" |3.6.5 文件流和文件描述符 99
" u' g) y% H9 w" c6 l( F/ i3.7 文件和目录的维护 100% v. ~" E8 X# f6 W+ ^8 E" p
3.7.1 chmod系统调用 100
1 h0 d# x; x. F) q5 z! l3 }: b3.7.2 chown系统调用 100
: {& l, v" B2 c; ?* u3.7.3 unlink、link和symlink系统调用 100( C9 X3 c1 ^+ u: x' y
3.7.4 mkdir和rmdir系统调用 1015 I! h. D( B0 M* A8 f
3.7.5 chdir系统调用和getcwd函数 101
! \) w" b; B' Z- t8 Q* j" U# f3.8 扫描目录 102: ?0 t9 L9 a' _' b
3.8.1 opendir函数 1027 b" D1 U( \1 \' h9 ?! N3 I
3.8.2 readdir函数 102
4 z  O$ ~8 W# Q3.8.3 telldir函数 103' m# ]/ q% L) \6 R/ g
3.8.4 seekdir函数 103
, @7 O# C# x2 ]# ?5 V! S% I& e1 J3.8.5 closedir函数 103
4 V+ I; \# a( x, N& |' }3.9 错误处理 106
9 }7 x7 g: S) I; }- e3.9.1 strerror函数 106- j+ _; L* U5 }+ @
3.9.2 perror函数 106  W8 E! A; i9 L/ x8 q2 D; Q& M( o
3.10 /proc文件系统 107
( Q1 g7 D8 K0 _, Q3 M& r) s) O3.11 高级主题:fcntl和mmap 110
  {2 R" T  O9 {$ e3.11.1 fcntl系统调用 110  b" P' K" O* ~5 u. _( D
3.11.2 mmap函数 1119 W, F6 y. w) v. j7 N
3.12 小结 113' ^1 g4 x8 [6 E$ @8 ]
+ ]9 V) q/ Q: l
第4章 Linux环境 114
  ^7 O( G% [* K6 O6 r2 B6 U: w# U3 w" M# S/ S" N0 A
4.1 程序参数 114# R4 E1 }: w+ `* z& Z4 |
4.1.1 getopt 116* p* _2 o1 x  c
4.1.2 getopt_long 118
9 R( e6 o+ [; w3 _1 Y3 S4.2 环境变量 120. \% B/ |! i. [' w9 `% U
4.2.1 环境变量的用途 122
/ M! ^) H3 E4 ^9 P' k! g4.2.2 environ变量 1224 F7 k  J, _0 n
4.3 时间和日期 123; r% n2 F( n  K7 I" j# C/ Z5 G6 k
4.4 临时文件 129) z. Z4 s4 E( K8 U4 J8 }6 F
4.5 用户信息 131# f, e( `, E# H  n0 @- |
4.6 主机信息 134
/ v0 f* w! j+ B, A4.7 日志 135# c/ x% d3 Y% [4 s: K2 J/ b
4.8 资源和限制 139
0 O  p( s6 ^3 e: o( ?* j6 U4 Y% ]4.9 小结 143* S4 d' l3 _: W4 R2 k9 k
  x3 E; M! I3 Y
第5章 终端 144
9 ^) ]$ t8 o$ t
% n) w  Y# U' c9 x5.1 对终端进行读写 144+ U) }9 {* I) Q: K
5.2 与终端进行对话 1492 F+ x# Z2 Q. O) K+ f
5.3 终端驱动程序和通用终端接口 151
$ b/ n# E6 G& c( K3 ^  j" ~- q5.3.1 概述 151( p. K3 o3 E' ]) V# V; A+ i" O
5.3.2 硬件模型 151
2 Y: i7 Y4 H3 ~* i8 C+ ?, a5.4 termios结构 152
, g: O3 g- K( W" F: H5.4.1 输入模式 153+ b6 }7 K0 t9 A! \( R, h  O
5.4.2 输出模式 154
* j8 m+ P* d5 n5 K5.4.3 控制模式 155
# s5 @; O6 a5 O. J1 ]5.4.4 本地模式 155
; t* i; D: g# u" O5 L( q  Z5.4.5 特殊控制字符 155
* G; r8 V3 x# g, y5.4.6 终端速度 158! p/ a4 m4 W2 p$ V0 U$ Z
5.4.7 其他函数 159
3 ^  Z. B% l3 n- u% [5.5 终端的输出 162
0 y$ w1 q$ q; o! z6 o5.5.1 终端的类型 163) }* N  e8 _! o# D: ]. Y$ Q
5.5.2 识别终端类型 163
4 H: d2 O6 ?: w% B6 S8 ^4 w2 `5.5.3 使用terminfo功能标志 165; \% S. \" k. x1 I6 d& X
5.6 检测击键动作 1704 x, ~1 s" Y+ U+ W3 q
5.7 虚拟控制台 172$ f" M) L! I! _/ `6 P
5.8 伪终端 173* j2 G% V+ m* v, U6 ]
5.9 小结 174* f! @& w' C& `; ^  o/ j' d

+ ~( A/ r1 B1 r5 I- P第6章 使用curses函数库管理基于文本的屏幕 175
& p! Q6 v  Q! y7 d) p- }( X8 F- d
6.1 用curses函数库进行编译 175
% {1 u9 J- m: [9 J( K) t7 _6.2 curses术语和概念 176
( R( v3 p! R9 Z) Z; z* B6.3 屏幕 178! M/ H% z) C0 l/ R: C/ M; N
6.3.1 输出到屏幕 179
/ c0 f/ M' B  V6 m( c6.3.2 从屏幕读取 180
: p2 R9 |3 O( a$ m' N/ r* b6.3.3 清除屏幕 1807 b& P- }: b: i/ g' |" i
6.3.4 移动光标 180
+ ^) L( [+ W- F2 P& z6.3.5 字符属性 181
# s8 V: E8 [/ [9 Z& z2 T  N/ Z$ G- Z# C6.4 键盘 183
# p+ h* v, c6 K) H( A) B6.4.1 键盘模式 183: n3 R0 a/ E% {0 p3 M9 S
6.4.2 键盘输入 184
- i' A2 K2 j5 [3 L: c& [1 @6.5 窗口 185& ~0 y) n4 M$ n4 ^: j$ Y
6.5.1 WINDOW结构 185
% i' C  T* @( \& I# }6.5.2 通用函数 186
; {0 C$ T0 D' _2 O  W6.5.3 移动和更新窗口 187
8 V0 _+ W/ B2 k6.5.4 优化屏幕刷新 190" o; R# B0 C9 [' W
6.6 子窗口 191* v& b, f( o8 H, O3 `
6.7 keypad模式 193! O( }' {0 y0 ?  _: G! }/ s) D
6.8 彩色显示 195
3 I9 c$ y& A1 p  S5 @4 S( V/ J6.9 pad 198
* S# p4 F9 F: O3 M6.10 CD唱片应用程序 200
2 a2 H4 L) A7 \4 c. ]6.10.1 新CD唱片应用程序的开始部分 200
0 A" P! u) ?- @6.10.2 main函数 202% T+ k% v2 C& o" i, X2 r! G
6.10.3 建立菜单 203
8 @( |) l; B, K3 k' d. _* F; [6.10.4 操作数据库文件 204$ h6 E, I* L  C4 X7 }; D
6.10.5 查询CD数据库 209
8 ~. |$ M: y3 R$ w1 D- t* B6.11 小结 213
9 ?" [5 ^" Y- d; @3 Y! ~3 h, Q( Y3 T# u; D7 q7 b
第7章 数据管理 214
8 F4 H. C# \7 c2 {. a& e) a! l7 G* a# x. n
7.1 内存管理 2149 O; H0 L4 v+ O+ Z. ^* k. z
7.1.1 简单的内存分配 214
" ^7 s8 Z2 T( b8 [5 a+ F7.1.2 分配大量的内存 215
0 o! m0 L0 H+ X& N+ O# @, {7.1.3 滥用内存 2183 ?: A1 V. y( H& Q
7.1.4 空指针 219. b. h7 p! K: J9 X3 C- b
7.1.5 释放内存 220
2 A! q( {2 X0 {6 q' C7.1.6 其他内存分配函数 221
! k" ^' P2 }% N1 `# ]7.2 文件锁定 222
$ J5 f9 {$ _, B9 g7.2.1 创建锁文件 222( j2 i% W& s: Z+ D
7.2.2 区域锁定 225& t/ _- I) A' u# X! W- h9 s/ h& A
7.2.3 锁定状态下的读写操作 227
7 l) H& q8 y+ Y: r' N! z: l8 I7.2.4 文件锁的竞争 232
  M, Q1 i& g- J3 Y7.2.5 其他锁命令 236
- W# w, W$ |7 s: {( y7.2.6 死锁 236" t. w% Y- g( j1 s. Y+ ~, m' X
7.3 数据库 2376 _: m3 V* b8 J: \8 [; @+ k- w
7.3.1 dbm数据库 237% y  u- m1 v9 g3 M9 }
7.3.2 dbm例程 238
5 c" G' l. D2 P+ N7.3.3 dbm访问函数 239/ p- n2 T- ~& L- R" J+ A# b/ [7 I
7.3.4 其他dbm函数 242% D9 N* b% `% H/ x6 K
7.4 CD唱片应用程序 2444 y  g7 J) h  \( Q3 j8 q; X
7.4.1 更新设计 244! \* S7 N& O( j' Z" B( u
7.4.2 使用dbm数据库的CD唱片应用程序 245
$ E* h, l+ g* F& |9 G" l% w7.5 小结 262" w- _/ Y7 A; [# v3 o/ P# z' Z4 q
) l. L$ s1 s/ j2 e1 Q9 t
第8章 MySQL 263
* f+ M! }- Y- @7 u9 v+ w
7 o) e/ S* ~, i1 E8.1 安装 263  e0 r2 h7 H8 R- R" V7 H0 ?' o3 q4 b
8.1.1 MySQL软件包 264
9 |) _2 V( k' g5 h' k8.1.2 安装后的配置 266
4 T( E0 |2 n' W' U9 h2 ?) ]% s8.1.3 安装后的故障修复 270) ~( m2 D' ^4 ~5 G- j
8.2 MySQL管理 270
7 x" w/ [9 j7 ^! X( o8.2.1 命令 2700 t" C5 B& Z* }' k2 s
8.2.2 创建用户并赋予权限 274; f& b7 ~* }3 I' E* N2 C  R( q; q
8.2.3 密码 2765 O, z7 }  s1 C% a
8.2.4 创建数据库 2768 q# t$ z3 ?) ?. f3 l. G
8.2.5 数据类型 277  b) `- q/ M, V" l0 {4 j! y2 k# s
8.2.6 创建表 278' ]; r0 j7 r4 A$ a
8.2.7 图形化工具 280
' o' \* `3 q( g9 ^8.3 使用C语言访问MySQL数据 283
' L" O9 F* A3 ~. n/ Z/ d1 l, g0 }8.3.1 连接例程 2837 [1 E$ B) b' A. s
8.3.2 错误处理 287
* S% i5 P  P- v4 O! l8.3.3 执行SQL语句 288
& d! F, E6 o* s  d3 V! Q8.3.4 更多的函数 301
8 d7 x7 M# L) k6 a8 h" N; a8.4 CD数据库应用程序 301
1 f8 z" ?3 g9 R2 E' ~  o8.4.1 创建表 3026 r: b3 x3 u6 N: g, G* b
8.4.2 添加数据 304' l3 a1 t! h; b
8.4.3 使用C语言访问数据 306
: h, x( [* c7 O3 {( T8.5 小结 316; {5 f+ N+ R- r3 Z; m/ N2 d
; u/ I% z: C, i6 J
第9章 开发工具 317
9 `  K3 ^; P1 M5 c" C) s' e( i# g% n+ @  |8 d
9.1 多个源文件带来的问题 317
! R$ O- S+ O  A9 p9.2 make命令和makefile文件 318
, |% D  t6 T& T: Y9.2.1 makefile的语法 318/ D3 k; `" {" Q# a* W/ l- }+ j
9.2.2 make命令的选项和参数 318* }. y( O3 R& e3 \2 \- y% H
9.2.3 makefile文件中的注释 321
) }* J5 I$ j1 t% D9.2.4 makefile文件中的宏 3211 e. ]) S) \; U) D- R' H. D
9.2.5 多个目标 323
5 ^2 Z/ H- S1 J% E. r0 A9.2.6 内置规则 325
. \2 S: w0 Y0 F0 e" L% [7 x  u/ Q9.2.7 后缀和模式规则 326
/ {. {! }" q- P7 G9.2.8 用make管理函数库 327
+ x$ S4 V4 x) b! Q, H9.2.9 高级主题:makefile文件和子目录 329' I# m* M; @4 T0 M: b) J7 Y# |, h
9.2.10 GNU make和gcc 329
% `, G8 I6 N/ C9 v/ C4 w' v9.3 源代码控制 330
+ h1 s- H9 V% c/ V9.3.1 RCS 331- `+ x0 U, B/ i; M, ?7 `
9.3.2 SCCS 336
8 q  K+ ~6 Q: i9.3.3 RCS和SCCS的比较 3365 v2 H2 e, N7 u" c
9.3.4 CVS 3375 l/ p8 Y# I/ Y* _: T0 @, H
9.3.5 CVS的前端程序 3409 b) T. \% \6 A, o. L0 j
9.3.6 Subversion 3411 W0 H; p' [3 _: r4 v4 k
9.4 编写手册页 3426 `& I, b+ Q. S3 m# _; i* p. d" v
9.5 发行软件 3456 R% N" ^  A9 J: u4 C
9.5.1 patch程序 345  V1 I3 M0 [) I; r+ `: Q
9.5.2 其他软件发行工具 347
) l8 n+ n' _! d3 d! V0 Q: z3 D9.6 RPM软件包 349
1 r. a. H$ d& i9 T, p# c9.6.1 使用RPM软件包文件 349" ]& ?0 q% b4 M2 l8 Y
9.6.2 安装RPM软件包 350
, M& U! x) K' |* }# I; ?9.6.3 创建RPM软件包 3506 i  s, w. ~* S2 X% _9 k
9.7 其他软件包格式 3585 I% i- m3 R( C! t
9.8 开发环境 3580 F  `2 W6 V# P; z
9.8.1 KDevelop 358
$ ^, q" ^7 E0 l2 h3 f9.8.2 其他开发环境 3609 o* d- a% C$ o8 ^
9.9 小结 360
9 t2 x- q; u4 G( z2 A3 B$ w
: v, o) i9 Z6 b+ B* Z第10章 调试 361+ O% W1 O$ M/ U/ z+ H

. R7 F9 S) l& D! P- Q$ B/ b10.1 错误类型 361
2 U9 E4 x, p' A  r& u" |7 U9 G10.2 常用调试技巧 362  Y5 r1 e2 r, l# g0 I) X
10.2.1 有漏洞的程序 362. @1 }) k' t  y6 p; w8 k
10.2.2 代码检查 364  o4 `" H8 a' U" s) H- x
10.2.3 取样法 3656 x% _% o% Z) z
10.2.4 程序的受控执行 367
7 C# q" g1 J5 l; T6 n  E10.3 使用gdb进行调试 3683 Q0 f; J  F( z* Y; h9 {$ c+ Z& Q5 q
10.3.1 启动gdb 3680 e, K% C3 F0 J+ `
10.3.2 运行一个程序 369
+ ^! I- l& k" a6 }6 Z! @4 y1 x10.3.3 栈跟踪 369
" i7 z1 s- x: U10.3.4 检查变量 370
/ ?5 E9 T& M4 K$ }10.3.5 列出程序源代码 370
8 P7 }' A0 F# w* e# \, L; i10.3.6 设置断点 3713 [, J  b' ^6 w; f
10.3.7 用调试器打补丁 3746 f" R' b  @8 y& N; n  i4 T
10.3.8 深入学习gdb 375
9 X' S- E: `3 e; V4 x10.4 其他调试工具 375
9 W4 Z9 G7 |' D; n* S) O% N, w10.4.1 lint:清理程序中的“垃圾” 376" X/ b$ S9 E7 Z* L6 b
10.4.2 函数调用工具 378
$ ?' i1 a6 w) ?8 s10.4.3 用prof/gprof产生执行存档 380
. [6 n. G9 `2 m' T* \  F! S" q10.5 断言 381( I& ?7 A, F1 A% m/ I
10.6 内存调试 383# A1 Z$ z7 R6 R+ ^" x
10.6.1 ElectricFence函数库 383
5 r2 C- F. i: ]4 H; Z10.6.2 valgrind 384; b0 J, a& t7 {& d6 T  ~7 F
10.7 小结 387
: u& N1 T: k, @* Z" W2 N$ q3 c
4 y; v( {# A: L第11章 进程和信号 388' B; Q& F; C4 u' y. O) Y- \
( e; ]+ |  g# y& N6 a1 W& k
11.1 什么是进程 3888 [& \6 {1 t$ [! F; K" l! Q
11.2 进程的结构 388
" z2 A3 e5 x- ?2 K11.2.1 进程表 3906 y% [0 e9 t, J, ^  V8 \
11.2.2 查看进程 390
. m; u/ }" g9 ^5 D+ A4 i( o11.2.3 系统进程 391+ ]% O: h# W3 h" a* x' ^& A
11.2.4 进程调度 3936 a8 v* I' a: D% a7 k+ n
11.3 启动新进程 394
" ]  j9 m* B& i3 z5 D+ v11.3.1 等待一个进程 3999 Z) X' ]+ O! T
11.3.2 僵尸进程 401. Q: \/ [* d8 ^! D2 k1 E! b0 m
11.3.3 输入和输出重定向 4034 D! ?/ m1 C- n4 g3 J) D' I$ _1 b
11.3.4 线程 404- D; p% u, B; z5 x
11.4 信号 404& [: E6 `- X, y( @- p! o
11.4.1 发送信号 408
7 [8 l; o& x! W+ Z# ~5 B( p11.4.2 信号集 412& {/ w- s& s, t' U9 Z
11.5 小结 415
1 G7 G7 B1 `. T 4 V: T" e5 ^. L
第12章 POSIX线程 416
. e" K' q$ P& ]6 V6 r3 @6 Z9 B. T5 V
12.1 什么是线程 416: |) x0 q; Q6 d  Y
12.2 线程的优点和缺点 4178 ^$ c* h5 o. b' f$ o! j
12.3 第一个线程程序 418
5 n  f' c+ K+ G3 E- ?2 D12.4 同时执行 421
2 E: D4 o2 n( M" [- w3 z" p12.5 同步 4232 m4 j: {4 T- h, y. P) `$ V( [
12.5.1 用信号量进行同步 423
- M  @& @+ n" V) D6 N5 x12.5.2 用互斥量进行同步 427
3 }. i3 M. Z- O4 `1 p1 c3 p4 y6 ]8 |12.6 线程的属性 431
' e3 L4 K5 _, ^12.7 取消一个线程 435
& g6 f# w2 x, f, H" C12.8 多线程 438, K" n- P- q' V( Y1 `
12.9 小结 442
5 g8 D6 }' K2 k- i3 }4 h7 M3 G3 I( s) q- P+ {$ b/ K1 D- C
第13章 进程间通信:管道 443, a* C. Y( J: ]5 _

/ k5 O6 V/ Q; N% y7 p: a! Z, Z13.1 什么是管道 443
. h; V/ G# n" c3 d4 i- w& O13.2 进程管道 444  l9 X$ N6 X, A+ Y! C
13.3 将输出送往popen 445. G) Q) A* S! J  f+ s
13.3.1 传递更多的数据 446
% S* k/ m; v+ w7 W% v4 Z13.3.2 如何实现popen 447
# P  M0 x  b) G13.4 pipe调用 4492 N0 {7 f9 I: d9 d( c' O- q
13.5 父进程和子进程 451( V8 X0 t1 n) c( l, c( ~" {5 O
13.5.1 管道关闭后的读操作 453
  e$ q  q. i: Z( o6 `0 [$ h13.5.2 把管道用作标准输入和标准输出 454
5 ?' j$ n7 F1 a+ `1 _+ ~, K! Q13.6 命名管道:FIFO 456
" {8 f. o5 N, a5 ^( J! H13.6.1 访问FIFO文件 458
( ]& p5 e8 ~, \13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464: d9 F" Q# ^" x4 n# q7 F
13.7 CD数据库应用程序 468! p$ j* @: q9 W4 i
13.7.1 目标 469
+ s' k5 p) _2 n, K13.7.2 实现 469
# E9 S+ n& L: s6 o13.7.3 客户接口函数 4721 d& ?1 k8 x, D) |
13.7.4 服务器接口server.c 4780 K2 h/ x2 c# x4 Y8 P* D1 G
13.7.5 管道 4814 G, q" ~& B" ~9 x1 ^9 C
13.7.6 对CD数据库应用程序的总结 487
/ _5 l6 g! K% b! S8 A13.8 小结 4878 @* v. A9 i6 [% E1 {  c' G
' o! O, c  ?' [' g% }% K
第14章 信号量、共享内存和消息队列 488
9 h' d% _; X& F/ V8 m2 a
% ]: S5 b# b2 Z5 t) m4 d# F14.1 信号量 4888 T/ `' ]' E( H, A5 t9 n! C  I
14.1.1 信号量的定义 489
- h# I6 g( a, i# Q/ N14.1.2 一个理论性的例子 489. N$ Q8 ?  H& @% k/ |
14.1.3 Linux的信号量机制 4901 e) b, l4 c/ m; W8 [" g
14.1.4 使用信号量 4927 ?& K* H$ S. l( k" d9 c3 G
14.2 共享内存 496
- u% U4 L& J% k8 G; c14.2.1 shmget函数 4974 b. I2 Z. @1 ~) I! A% p* t
14.2.2 shmat函数 497- N# S7 g2 ?/ x7 o2 f
14.2.3 shmdt 498- Q0 T3 N# ~% L: {, W
14.2.4 shmctl 498$ E+ [3 e3 W1 _) Y# n' w% p
14.3 消息队列 502, f- q- Z, q- @& N+ @2 F4 K7 w
14.3.1 msgget函数 502
! n$ d0 e  u0 d+ r14.3.2 msgsnd函数 503
5 c; t( M* n: T/ t3 K14.3.3 msgrcv函数 503
# F% o7 P2 V9 k% _) }% [) \  Y14.3.4 msgctl函数 504
# G  k  b7 x/ e, {14.4 CD数据库应用程序 5074 u7 z* _2 d; P2 S
14.4.1 修改服务器函数 507
$ x9 E7 I1 [/ N! \7 ^9 m14.4.2 修改客户函数 509
; ]% Y' D5 a8 w# n" A14.5 IPC状态命令 511
" m3 t+ s1 d8 A14.5.1 显示信号量状态 5117 T" c0 z$ ~$ h: @* @
14.5.2 显示共享内存状态 5116 j  G. @( a9 _$ c
14.5.3 显示消息队列状态 511
( p" w9 o5 O2 b8 _% K6 r4 d14.6 小结 512  f8 X7 M- U# @9 H$ {3 b/ F; D( i6 m
' ~4 W. n9 t% e
第15章 套接字 513: i' \7 \/ ~, |3 B2 M# V
' l) B2 h# A6 Z
15.1 什么是套接字 513
% V9 Z* P. S1 c7 Y15.2 套接字连接 513
: ^9 S- e' L' I( a. ~% v15.2.1 套接字属性 517
. z6 M3 U* O" O" x. ^! C; d, b" ~15.2.2 创建套接字 519; z$ X7 W! G" D% W
15.2.3 套接字地址 5206 K3 }3 ?/ Q: @$ k( E% I% x
15.2.4 命名套接字 520* o' Q6 E- T0 f$ v1 g& P
15.2.5 创建套接字队列 521
/ t& Q, a9 T) a. o" ~" Z15.2.6 接受连接 521
( B2 b2 P, d0 Y2 D. w( p15.2.7 请求连接 522
- @3 u% j1 S: \4 g& }; i" V15.2.8 关闭套接字 523- `: O/ Z8 G8 o  s4 h9 b
15.2.9 套接字通信 523
, F) w4 l- U. U, V' S; f3 J( N15.2.10 主机字节序和网络字节序 525  e. h1 V5 Y+ m1 g
15.3 网络信息 527
4 }3 Z1 K- B5 C% D( E' W4 m15.3.1 因特网守护进程(xinetd/inetd) 5314 [/ ]& c# ^% F0 ]5 k
15.3.2 套接字选项 533, \8 ~  S! F  v  L0 {" g
15.4 多客户 534
& a* `' [$ `* a/ ]+ T4 {15.4.1 select系统调用 537
7 V7 @0 C5 |2 v  W% P6 z. V15.4.2 多客户 540
& B2 E( M6 z' t3 s1 j15.5 数据报 543) Q2 L& u; d# R7 Q3 }
15.6 小结 545
1 I$ L8 ]& j! o& S  e* q1 h9 o( U3 B. _
第16章 用GTK+进行GNOME编程 546
& A3 [' Z- U1 z- b" Y+ ]2 G( u. o* b0 R- P
16.1 X视窗系统简介 546
$ u+ E& D0 B% x% b8 u" `* o16.1.1 X服务器 547
8 I; m  W- W8 U4 l* ]16.1.2 X客户端 547
% s3 N' I& W2 l# r16.1.3 X协议 547+ F! w  X+ c" t3 I2 [$ g- O
16.1.4 Xlib库 547
0 i+ B* E0 F9 v9 ?5 X, m2 {# C16.1.5 X工具包 547: N9 S" v( v$ D4 H" W0 E
16.1.6 窗口管理器 548
5 w- ^  i) Z/ g/ b* A16.1.7 创建GUI的其他方法——平台无关的窗囗API 548
4 K+ u  C2 e. c2 B16.2 GTK+简介 549
4 ?* O8 B% b* S16.2.1 GLib类型系统 549+ ~5 `+ _- O: C$ N" O1 @; r) z4 p/ E
16.2.2 GTK+对象系统 550
+ L# P+ U2 d+ n% F16.2.3 GNOME简介 550
" \/ }: s5 L+ h$ X! o7 R  z! J16.2.4 安装GNOME/GTK+开发库 5517 \! |2 F; d' d) B! m5 F5 N
16.3 事件、信号和回调函数 5549 h, q, ^( H- ^- U5 w
16.4 组装盒构件 556
! p5 T& {+ u( b1 _, L9 w  B, S16.5 GTK+构件 559
! q9 T( t/ [1 K& w) ?% ]' Y2 m16.5.1 GtkWindow 559
9 Z3 s6 ~+ Q; g16.5.2 GtkEntry 560
! @8 _% X7 X3 ~2 H; v16.5.3 GtkSpinButton 563; f  _' |+ P& s! @6 |
16.5.4 GtkButton 565
# A5 f% O+ A' P( n. b( a' U1 y16.5.5 GtkTreeView 568
. [" F6 _" u0 l: A4 n, m9 C16.6 GNOME构件 571' q2 q8 p) P* P' g& [! h8 P% J
16.7 GNOME菜单 5727 N- S  k0 s7 z
16.8 对话框 5767 |' Z, `# |( g8 N3 B8 V/ R
16.8.1 GtkDialog 577
1 ^  @' B% }9 J3 m4 u+ H, N16.8.2 模式对话框 578
- i) V2 O* T4 Q+ k16.8.3 非模式对话框 579
" D* Z5 K' p- D; `16.8.4 GtkMessageDialog 580
$ p3 F  k; F, M1 A' [16.9 CD数据库应用程序 581
4 j* u# _7 a6 {16.10 小结 592
1 X7 h7 m, |. v9 R4 t' ]0 `$ D
- Y7 C/ f! M+ p) V第17章 用Qt进行KDE编程 593
# T# B. s) q& F9 Z: L" ^- Y; B
! N+ b" f* B7 J/ z17.1 KDE和Qt简介 5935 W6 f( p, a* B7 @' ^
17.2 安装Qt 5943 D; V. B( t: @0 V7 P4 a" _  W
17.3 信号和槽 596
. b4 k" }. I5 {17.4 Qt构件 6028 D6 J9 m+ n: I) \2 v* w* ^
17.4.1 QLineEdit 602
8 N& t  Q: r2 [: W17.4.2 Qt按钮 6053 l4 S* |  g. s$ k! r  ]& k# e
17.4.3 QComboBox 6097 x7 W- h+ I' }7 ^. R7 E  ?
17.4.4 QListView 613! Z% r$ Y9 k" ~- _1 X9 l# h
17.5 对话框 615
$ T4 M* f* T/ @; ^4 E17.5.1 QDialog 615+ D" N+ \( j: D7 q4 A6 u7 v$ c
17.5.2 QMessageBox 617
- ~+ H  S" o  _' e+ h17.5.3 QInputDialog 618! l- r  ~7 K& m, t* N* a% w* R1 x9 e
17.5.4 使用qmake简化makefile文件的编写 620
$ K# @, `/ o- O) p8 F17.6 KDE的菜单和工具栏 620
, J1 s& F2 o5 W/ w+ m17.7 使用KDE/Qt编写CD数据库应用程序 624
) L3 M/ r* Q# ~2 t17.7.1 主窗口 624' a: ~  F5 X$ Q  P
17.7.2 AddCdDialog 627
3 e3 ]5 p7 |4 |" z* D. J; M17.7.3 LogonDialog 629
' N% W( V8 P3 x0 x/ K17.7.4 main.cpp 630( V' D- [* r) s7 L
17.8 小结 632
2 O3 l7 Y+ q& \2 A# I - Z$ S% j3 z1 G  \7 I
第18章 Linux标准 6330 ?& `, W  j& {3 R# L/ ?

3 m3 H, ?  ~. R7 _- o18.1 C编程语言 634
! S1 x% ~* j' _" ?" s, f& \18.1.1 发展历史简介 634" O4 ~; p* J5 K' q6 e
18.1.2 GNU编译器集 634& v. K: C( p  j( q, m+ ?
18.1.3 gcc选项 6357 j2 n3 j' W; ~0 p0 x- U
18.2 接口和LSB 636# ?% j+ A$ F2 c+ X4 C
18.2.1 LSB标准函数库 6377 g" Q5 @. e* ^  K6 }$ n
18.2.2 LSB用户和组 638. Y. N- W5 ^( y' y6 H
18.2.3 LSB系统初始化 638
+ U1 M7 P1 b) H18.3 文件系统层次结构标准 639
4 O5 ?8 a7 X( H2 l; B18.4 更多标准 642, x# q1 Y; F+ e6 ~
18.5 小结 642/ B0 l6 Y7 ]1 h, o( ]6 \: o: K
+ c% K+ Z2 y, M+ m  R  x
4 e+ Y2 _) H2 z, s# _/ \, y7 }0 ?

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
wrz + 5 + 5 + 3

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:2 天
连续签到:1 天
最佳答案
0 
发表于 2017-7-30 20:48:01 | 显示全部楼层
这本书不错,讲解详细,值得一读
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-8-20 21:29 Powered by Discuz! X2.5 Theme by dreambred

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