|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
/ Y3 G! n: x$ k: n
0 G" k$ _6 B$ `书名:《Linux程序设计》
& K, E6 V& C5 Y+ j1 ~4 o% |作者:马修 (Neil Matthew),斯通斯 (Richard Stones)& U2 K# B+ i8 `& {0 k5 M2 l
译者:陈健,宋健建
+ v& U. n5 O/ s# q$ r出版社:人民邮电出版社
# o% u0 o9 M8 g% h出版年:2010年6月1日(第4版)
! w% |+ ^! ^8 z; q$ |% M4 _ R定价:99.00元
: m6 I+ u5 v' k% j' U* q装帧:平装
% O, U" L$ E6 z+ ]9 C4 g+ {) HISBN:97871152282153 U3 C& V/ x2 i9 \ X/ ^- @* ]
6 x0 z4 B* V+ W( j- }. }$ [
购买链接:
; y. w) t4 n4 q2 [- C8 o1 O+ ?* M8 J5 K$ D, m& u
- e1 h; a' p( T" @6 J0 H0 u. p9 I亚马逊(Kindle)-> 传送门! Q% `, b' S7 L$ C( O2 t
/ H3 E$ e, g7 r3 Y: f, V亚马逊 -> 传送门
+ U0 t$ g, g: Y, K4 X3 b; q0 A$ h7 `+ s8 h
当当网 -> 传送门
1 b# ?( \$ h7 d9 Z" D5 E: F/ b; T3 c6 ?, N- A- O" B; c
京东 -> 传送门! v7 \2 N, F3 L* v# d3 D. z; M
& }: E/ u1 @0 `$ l& `
天猫 -> 传送门
Z- e* z, D! j2 e8 E' H- P( p+ x# }* l& H( X
0 r/ T" v; }7 `. P% U6 |
内容简介:! q0 \9 m* P. g3 z9 N4 v! u" E& ]. j5 b
/ Z$ }0 ~# X4 e1 T
2 P$ Q: z. {! V$ ~《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。
! }8 [2 @! c% \/ X/ K8 H9 u" `4 H7 O& X# B# [3 X% Q
《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。5 s: l* c; z& S, H& [# V
9 F$ K& n- M6 j$ p( b0 A+ u8 N1 ~, [0 ]% Y H4 g" A2 G
目录:
' L6 V- r+ S% Y/ k( |& L7 P5 `1 s8 _( j: o, e$ B" s
4 x7 v% C2 b9 ], F% g! ?, U7 T
第1章 入门 17 P! H. Q/ c- T: p/ K
% J# l% O q* K4 D1 v; ~1.1 UNIX、Linux和GNU简介 1
& y. \8 ~3 J* q, D7 c+ b1.1.1 什么是UNIX 1& s& M _* D4 \* g
1.1.2 什么是Linux 2) ~+ ]# k: j9 ~0 v' a
1.1.3 GNU项目和自由软件基金会 3
# o4 U n" E/ W* e+ n1.1.4 Linux发行版 3
+ I. i) w( k" X& G2 e4 W1 S' R1.2 Linux程序设计 4
0 ]& v6 F/ `. i& N& y/ o6 _1.2.1 Linux程序 4
5 m" ?' x1 I8 E2 { L$ M j% y; u1.2.2 文本编辑器 5
3 ]7 F$ j: E4 W3 N# z" e1.2.3 C语言编译器 5/ Z2 E7 Y; }8 M- D/ p
1.2.4 开发系统导引 7
# g1 L; v9 p' v- \% O1.3 获得帮助 121 J8 |( n( {! {
1.4 小结 14
, K7 X& s% U: H2 A
) j6 S6 Y! O |2 w+ C. c, m8 x) z第2章 shell程序设计 15% b! v+ N1 w9 n% n: \
; Q, c# b$ M2 R# @- H
2.1 为什么使用shell编程 15
/ p+ u. R, J0 @3 G m2.2 一点哲学 164 U$ I0 h! E+ d2 B
2.3 什么是shell 167 D$ X( p/ X) b1 i$ H3 B+ e
2.4 管道和重定向 18
L( r9 F2 W0 ~% `4 t' _2.4.1 重定向输出 18
5 C" B# M9 W6 x2.4.2 重定向输入 191 `7 w3 ^+ [: ^% J) w
2.4.3 管道 19. O4 {) j0 O! n# m# G. }
2.5 作为程序设计语言的shell 20, q- k7 t9 g3 m9 b- p! L! ?& p+ _
2.5.1 交互式程序 20
, D9 I( }* r: M- b2.5.2 创建脚本 21
5 ]. X M7 `1 a R2.5.3 把脚本设置为可执行 22
- `% `7 K& f# C/ z' r* R. U2.6 shell的语法 23
9 G$ r7 Y: X% x& W* _2.6.1 变量 23" r a: r) g2 ^* s
2.6.2 条件 27
; |, p# J! C# ]9 V4 q2.6.3 控制结构 29) D% m$ S) W; ~. Q- U0 A
2.6.4 函数 39: A+ p8 K9 e& `8 o7 T* P
2.6.5 命令 42
1 G9 o. F* w3 R2.6.6 命令的执行 58
* N3 V! ^, ?" A. T* \2.6.7 here文档 61
7 b9 J5 n# o# H6 Z; `( P2.6.8 调试脚本程序 63. ?9 V! T% s" \+ L7 u4 A; t
2.7 迈向图形化:dialog工具 63
) a$ b( |9 }1 e9 m# M' g2.8 综合应用 68
0 Z' v& G! o6 P# f6 ?( S4 m- l2.8.1 需求 68+ u5 m+ y- s/ R0 d' P
2.8.2 设计 68
V1 v: R/ i# X4 t h% `* E2.8.3 应用程序的说明 76' q' _% {4 ]# Q
2.9 小结 774 G0 O: K. N# x% z( s" j
3 C0 ]% c1 X# f7 @
第3章 文件操作 785 {# i' F+ {- |7 A. z) a
4 W& S1 _; N- d% D
3.1 Linux文件结构 78
& e- D' y8 ~' `# J3.1.1 目录 79
9 Q5 z" D m1 z+ U. J3.1.2 文件和设备 79
& C0 Y# ~' w: j; V7 `3.2 系统调用和设备驱动程序 809 p6 f, k- e: e! v
3.3 库函数 81& t: L# f( T& A% k2 @
3.4 底层文件访问 82% f* U; Y3 T; h& o6 m# Y
3.4.1 write系统调用 82& R- w) M5 @: X7 `3 E3 m9 D2 H2 I5 X
3.4.2 read系统调用 83
2 _# o5 a+ f' O) T: t: h3.4.3 open系统调用 84
* [% Z) C U+ ]+ V3 [. a" I' q3.4.4 访问权限的初始值 859 k' ?8 m& K( k/ a6 j F
3.4.5 其他与文件管理有关的系统调用 884 p+ r4 Z3 g" S% H7 M, _7 n
3.5 标准I/O库 91
& U6 a+ j( d. Q4 E" Y* |- G; T3.5.1 fopen函数 91# p2 f8 |$ `$ C2 D) C
3.5.2 fread函数 92
$ J/ Y) v2 V @9 v6 l7 E6 o3.5.3 fwrite函数 92) z5 ^, x6 v9 I- I5 t. @: H
3.5.4 fclose函数 921 Y0 t0 s r9 c: h5 j
3.5.5 fflush函数 93* T# u& [5 ?/ j
3.5.6 fseek函数 93) p+ _" o p4 a: N
3.5.7 fgetc、getc和getchar函数 933 {- {' n6 e- R
3.5.8 fputc、putc和putchar函数 94
4 L5 K9 r* v; U3.5.9 fgets和gets函数 94
' K9 l f% M4 i Q( ?0 k3.6 格式化输入和输出 949 H6 j* F ?5 I8 R# d, t
3.6.1 printf、fprintf和sprintf函数 943 Y: W" A3 p* ~, m* S& ]/ Z
3.6.2 scanf、fscanf和sscanf函数 96
+ \( ?# G; w& L/ [5 q3.6.3 其他流函数 98
$ V1 c7 n* K) Q3.6.4 文件流错误 994 v/ V# G x' q+ W
3.6.5 文件流和文件描述符 99+ R$ [2 E p+ s# g+ [
3.7 文件和目录的维护 100
8 D. H: ~7 O _7 E3.7.1 chmod系统调用 1006 \1 [+ d5 n; X: F4 O
3.7.2 chown系统调用 100
. T8 Z {) w% X# i. H2 }6 D. T3.7.3 unlink、link和symlink系统调用 1009 |5 e! H3 Y3 x
3.7.4 mkdir和rmdir系统调用 101
. ]* l9 h& [4 Q3.7.5 chdir系统调用和getcwd函数 1016 N- x, w1 {6 s! i, k
3.8 扫描目录 102
- Y; ~% H ~+ Y1 b3.8.1 opendir函数 102& {3 I6 j; k) _( o- F* G+ L h
3.8.2 readdir函数 102, Z/ j& |9 {& C7 |0 I" b2 }! b2 S$ I
3.8.3 telldir函数 103: A% g- E) M8 r8 m4 j
3.8.4 seekdir函数 103
- Y# z( r5 s! b& N! x5 Q) q3.8.5 closedir函数 1036 H9 n9 x. E! p% i0 x
3.9 错误处理 106% n" `) C" u) p- F" P- a% h
3.9.1 strerror函数 106& z! e, v' u5 E- i) K
3.9.2 perror函数 1068 k$ Q$ x' a* A9 G E: ]! x
3.10 /proc文件系统 107- e+ g% z% x" l9 }
3.11 高级主题:fcntl和mmap 110
( V7 c/ d' Z% u5 w+ u7 e2 s$ Q! A3.11.1 fcntl系统调用 110
) l$ r' a* G4 Y7 o# p3.11.2 mmap函数 111# ^- g9 y }" X5 T" Z: N x
3.12 小结 1131 U y( B7 j5 D2 a
$ w. d6 \+ _; Q第4章 Linux环境 114/ f) G8 T0 b% ]
% H0 d, C6 W& M& a; n0 G
4.1 程序参数 114 E1 N i! e( ^6 @, p+ Z
4.1.1 getopt 116, f+ y2 r4 G3 w' ?
4.1.2 getopt_long 118& w0 R! t# |) m! ?1 x
4.2 环境变量 1207 p! R- r+ B% Y9 \- {- p
4.2.1 环境变量的用途 122
2 {: k }! T/ v& `+ {7 i4.2.2 environ变量 122
( {: E# S" _( P% E$ p, M- ~0 P ^* p: _4.3 时间和日期 123
& y! x v( U2 d* L# p c `& w4.4 临时文件 1291 ~! y; {5 n+ s0 J; s e
4.5 用户信息 131
) w6 |5 l2 ~4 E6 f, L! q' }4.6 主机信息 134
& j! u6 w5 `( `& J) v1 F4.7 日志 135
3 c9 A5 `2 U; S4.8 资源和限制 139
2 Z3 _/ J+ ?( ]2 T! X0 G4 ~6 L4.9 小结 1438 E" |) l4 F- z/ h0 p( O! C
0 U- c. N' j, \* r+ x第5章 终端 144: `2 t( J5 |9 k( i4 O" H
0 H2 s( @; d1 J5.1 对终端进行读写 144
9 ~/ C/ w1 @7 j! G% j, R6 k5.2 与终端进行对话 149
2 Y$ H/ v" E9 c- ?. `+ _3 w9 B( t5.3 终端驱动程序和通用终端接口 151
. c# p& z( f& e# C+ J& C7 Z# s5.3.1 概述 1516 J- E$ W5 r& F8 {
5.3.2 硬件模型 151. P0 c9 Z9 J* c) W
5.4 termios结构 152
4 R8 P+ C* B( Y, x/ Q5.4.1 输入模式 153
y! k/ u# x2 {/ r3 o5.4.2 输出模式 154' C6 J& N3 L7 T& m' z9 R. K: A/ O
5.4.3 控制模式 155
& l+ N, F- K# N' k( v5.4.4 本地模式 155
0 n0 o- j0 Q; D) B! ^5.4.5 特殊控制字符 155
; U& O, d3 v. I X5.4.6 终端速度 158
( }, W# m0 E2 l1 H5.4.7 其他函数 159
# e( F& a+ p# _" Y/ \: k+ D5.5 终端的输出 162
, d9 L. L" A0 S9 k) {; e4 m; c0 G% p5.5.1 终端的类型 163
" V! [: V3 F4 c0 G5.5.2 识别终端类型 163
0 ` }4 X% X+ N+ ~7 C- Y2 H5.5.3 使用terminfo功能标志 1657 j% _5 ?& H4 [( V2 y
5.6 检测击键动作 170
! I4 Y0 [4 X& F, O! p5.7 虚拟控制台 172
v T, U; b; e" H7 o5.8 伪终端 173
2 l8 S( x ]9 x1 Q( u4 H. j, X% Y% E5.9 小结 174
" \8 H+ j5 d1 k! K7 F6 E
5 a y3 l, ?' L! L @/ O N第6章 使用curses函数库管理基于文本的屏幕 175
$ t8 S: ?+ J- O }% g
; q* ]( c1 V/ o" q! L) U$ Y6.1 用curses函数库进行编译 175
! D( B( b j& _7 C9 g6.2 curses术语和概念 176
6 V' L9 j: K+ E6.3 屏幕 178
6 |0 T9 {4 @6 k$ q, ]1 G6.3.1 输出到屏幕 179
+ [% E6 `3 p, [' J$ S7 p/ u6.3.2 从屏幕读取 1808 g# J- v8 F2 t! c
6.3.3 清除屏幕 180
; | K/ v, \8 d) w& y6.3.4 移动光标 180
% N* Z% L! x7 l! F& g4 \/ H6.3.5 字符属性 181
- p5 U$ {; n3 Z8 c, Q6.4 键盘 183
3 e8 c( F; e/ m* [' x6.4.1 键盘模式 1835 L4 {+ x7 Z; \% j5 O
6.4.2 键盘输入 184
/ M j9 y: r, [; a" A1 d6.5 窗口 185, |( a. f& Q1 [; C( |! n! P% d3 K
6.5.1 WINDOW结构 185
T* n, j0 p7 T* q9 x6.5.2 通用函数 1867 S! d! F9 s4 ]) t2 |+ ]
6.5.3 移动和更新窗口 187
1 l+ b) H6 r. r/ R% H- a+ G, f& a6.5.4 优化屏幕刷新 190
5 r9 m6 r7 V/ l- {2 f% p' @5 V+ E6.6 子窗口 1916 Z) Y5 X2 }0 S# A8 E% g
6.7 keypad模式 193
+ @8 H1 j G) y F0 `/ R6 E6.8 彩色显示 195
3 Z, ?2 U- R3 h, S3 _0 \, n1 _1 D6.9 pad 198% Z: N, W8 p: H' [5 w. @( A
6.10 CD唱片应用程序 2006 K m0 S) o9 F7 a- t7 W7 F
6.10.1 新CD唱片应用程序的开始部分 2005 X6 z5 ]1 N! e9 I9 R! ^; B
6.10.2 main函数 202
% s2 q F% f2 c, A" F% r+ L4 w. A1 a. Q6.10.3 建立菜单 203
, I' ~; v O/ e$ c9 Q: G6.10.4 操作数据库文件 204
, K2 K% z0 {7 F* y$ _6.10.5 查询CD数据库 209
; X9 W, S! r7 c& {: N, O6 g6 ]6.11 小结 213
2 v1 S5 B. M4 p+ @: { B4 \/ u" E8 V2 p
第7章 数据管理 2145 v4 l4 {3 o5 I
T. A& I( o, _
7.1 内存管理 214" u& O J: O9 S! ?5 S
7.1.1 简单的内存分配 2145 h+ t9 j9 I+ }; t. W
7.1.2 分配大量的内存 215) d5 H$ u: G+ _! X: t' t
7.1.3 滥用内存 218
# u* C6 l. j8 F" o1 J7.1.4 空指针 219
! ~& y6 i+ _5 u6 x7.1.5 释放内存 220
$ L/ A$ D+ o3 \3 K. h7.1.6 其他内存分配函数 221
! u8 x$ G. o9 u8 O: `1 j7.2 文件锁定 222
4 Q( W" I: ?& T0 ?$ e, }7.2.1 创建锁文件 222
- D n6 L2 O3 [8 ~7.2.2 区域锁定 225: ^) W1 [7 r# Q p: e y# A
7.2.3 锁定状态下的读写操作 227
8 q* p d3 p! { E$ N/ {8 B7.2.4 文件锁的竞争 232' R, Q I! W, U5 |& {
7.2.5 其他锁命令 236
) b0 H- [0 K8 m! j, T7.2.6 死锁 236
. n3 Q N8 l6 { v% {/ t/ K2 B; V9 H7.3 数据库 237
: ?+ _, y# D' o* ^# c7.3.1 dbm数据库 237; R) S4 @/ D5 k0 m9 z4 B% d' y) s: t
7.3.2 dbm例程 238. B6 d G) a' X7 ^: z, a7 J
7.3.3 dbm访问函数 239. H& _! }2 L$ z- l0 q4 \0 R
7.3.4 其他dbm函数 242
1 A1 E% I) R2 x+ G7.4 CD唱片应用程序 244/ I# y) n) g7 r+ A# ^
7.4.1 更新设计 244
8 O+ a, u& X4 t0 E* H2 ?% |, o7.4.2 使用dbm数据库的CD唱片应用程序 245
6 R- |9 k+ L) p$ \, J# g* R3 `- b7.5 小结 262; |$ s; P! N4 v+ w* h5 `
6 Y( H N$ R% i3 J- p; I" H) h4 u第8章 MySQL 2637 I N9 _* U5 h5 Q1 t. ?1 C
& L" y. Q0 J$ J! k8.1 安装 263
3 n" x) [& }; W/ m4 c o8.1.1 MySQL软件包 264
9 w; K2 P- o0 O, \8.1.2 安装后的配置 266- e* X8 \8 u; I1 j/ D
8.1.3 安装后的故障修复 270 U5 M9 K; Q' n* U) v. M
8.2 MySQL管理 270
; W6 G: D* P* z2 t* S8.2.1 命令 270
& q: H5 g3 v5 `( y9 w, Z" v" B; U8.2.2 创建用户并赋予权限 2741 @9 f9 \5 A" v8 t
8.2.3 密码 276) f: ]/ Q( T5 a' s
8.2.4 创建数据库 276& L' h2 H% ~( p' s! c& \* m. m! [
8.2.5 数据类型 2772 _& _. O& p( a
8.2.6 创建表 2784 z$ U7 w5 h$ f( U' K- y
8.2.7 图形化工具 280
0 d5 |7 C3 C/ o& a8.3 使用C语言访问MySQL数据 283* J4 `4 r2 ]) G& S8 B. n; ~
8.3.1 连接例程 283
h6 L) j1 h$ x2 S8.3.2 错误处理 287
6 w( q: G) c& B. l% T$ u1 l' Z8.3.3 执行SQL语句 288
9 ^8 l1 N0 K$ b( h0 m0 t8.3.4 更多的函数 301% \( \7 Z! n- p5 B( B
8.4 CD数据库应用程序 301
. A+ Q% F0 o( c B5 Q* C8.4.1 创建表 302
# n- w4 `8 |" o8.4.2 添加数据 304
- P7 F2 {" D) {( R; D8.4.3 使用C语言访问数据 306
$ f( p9 o& Z% _8.5 小结 316
) o, s7 Y5 P- k. O6 E, X% ^# i- a
/ k2 a% U$ ?& ` g; @第9章 开发工具 317
+ W* s$ Q% M) k$ `
; `0 |6 T m; O- [ G2 _9.1 多个源文件带来的问题 317
; f5 o/ v* v1 ?# A8 k9.2 make命令和makefile文件 3184 P! f1 k! h$ m* m, \$ r6 X6 x
9.2.1 makefile的语法 3188 p+ E+ G5 Y3 B% }0 H# U
9.2.2 make命令的选项和参数 318
; t1 s% ^, v' m6 f4 N T+ f v9.2.3 makefile文件中的注释 321
" c" _) c( h- Y+ n% u* F8 f+ A: D8 p9.2.4 makefile文件中的宏 3211 u5 ^3 y5 B* y9 u
9.2.5 多个目标 323% b& I) K) Q2 L- A
9.2.6 内置规则 325, n: x' h% }4 z# h
9.2.7 后缀和模式规则 326: R& i; M& h6 B6 X- G& f1 v
9.2.8 用make管理函数库 327 X- I; V. A9 [
9.2.9 高级主题:makefile文件和子目录 329" _: V; l. s# w
9.2.10 GNU make和gcc 3296 p2 w j# w2 v# @! H, y
9.3 源代码控制 330
) q& E' d* {+ Q4 N$ I* e9.3.1 RCS 331+ @2 p: p, f7 g4 d1 @8 f% s! T
9.3.2 SCCS 336
* o6 q3 H8 @3 J; n- |" D9.3.3 RCS和SCCS的比较 336
) Y u. f( f& x/ Z1 `) n) X9.3.4 CVS 337# C9 ?+ Q6 ?& a
9.3.5 CVS的前端程序 340
& `" s: x) P- C9.3.6 Subversion 341" s- I/ Y/ F9 q @
9.4 编写手册页 342! z- l7 z2 d' h; h
9.5 发行软件 345
8 ~/ {9 [1 @0 h [/ }9.5.1 patch程序 345
% p4 |; R4 [3 v& M6 [, f d- z9.5.2 其他软件发行工具 347, n- [$ u7 A/ q( e y' f9 Y4 c
9.6 RPM软件包 349
8 A4 y/ |8 {; I/ d, Z# S9.6.1 使用RPM软件包文件 349; G! d6 m/ p, Z- @2 \; T8 p7 S) ^2 C
9.6.2 安装RPM软件包 350
; ~! U+ ^' u" `+ a1 X. V s! l0 q9.6.3 创建RPM软件包 350
6 b" S0 `% ^# y/ a$ L- n9.7 其他软件包格式 358
' G* j' h( _2 z& T6 r6 }: c2 q9.8 开发环境 358$ D4 Z) M, s N" C! R
9.8.1 KDevelop 358
" G: }1 ], [( V" h& a9.8.2 其他开发环境 3605 w# E- }; W* l
9.9 小结 360$ Z6 G, ^1 r$ {5 F R. b1 n! ~
; c( v4 }$ [1 E
第10章 调试 361
! J, f5 O! I) U5 j% r1 ?7 V" @
4 U* `3 b4 ?# I) E$ C. J10.1 错误类型 361& ?# H* f7 i! F
10.2 常用调试技巧 362
4 O' w: e# K' v0 C- i; ]% H10.2.1 有漏洞的程序 362/ e3 K; S ?5 w% [- {7 N. a
10.2.2 代码检查 364
) q2 c1 ` y2 |" k; [ W10.2.3 取样法 365
8 t* l% k7 H/ N: v, r' f5 W/ J10.2.4 程序的受控执行 367
. u: A9 ]3 \ A/ C10.3 使用gdb进行调试 368
- P4 b0 S$ r& a( [/ y( _10.3.1 启动gdb 368
, w2 f. `% H4 P5 ~3 ?0 Z10.3.2 运行一个程序 369$ I; f8 r6 ~$ O
10.3.3 栈跟踪 369
, c6 S5 o: t6 e; p7 g10.3.4 检查变量 370
1 U4 T' V. g' h9 ?, t10.3.5 列出程序源代码 370
7 q3 J8 C f6 u10.3.6 设置断点 371
& B+ D6 \ }7 W9 {1 z/ K; H10.3.7 用调试器打补丁 374) p, \6 }+ Y5 e
10.3.8 深入学习gdb 375# u. h5 k2 Q9 f
10.4 其他调试工具 375- E1 }/ W7 S. Z
10.4.1 lint:清理程序中的“垃圾” 3761 W5 ^3 n( N# f. L3 o
10.4.2 函数调用工具 378# R5 m; w& Q# `) K5 w
10.4.3 用prof/gprof产生执行存档 380
: @6 A+ M' w9 z0 q5 W10.5 断言 3815 p3 v0 k/ E5 p( L# Z
10.6 内存调试 383' R' z+ f! I3 T& }( A4 K6 `1 g
10.6.1 ElectricFence函数库 383
9 y+ ?4 _% z* G7 F) C+ s10.6.2 valgrind 384. R2 I' o1 B Z
10.7 小结 387
: V- T# Q. u: A! d. J3 D! l5 C3 P8 N. l- J+ o' H
第11章 进程和信号 388. q8 W* ^0 Z: q p5 e' n
. r J6 z) S$ q$ f. @: `: o% D7 x
11.1 什么是进程 388
3 H% }' c' x9 `$ U0 Z11.2 进程的结构 388; y" A9 L3 f) ]6 Y
11.2.1 进程表 390
a$ k$ m7 E4 f3 b11.2.2 查看进程 390' v: A; B; g/ B; r
11.2.3 系统进程 391
- H* e0 S* p% X$ s9 @8 [, C11.2.4 进程调度 393
) e4 p X! U3 l' d11.3 启动新进程 394
5 I+ x- k' _8 ], d2 {- j) \! k11.3.1 等待一个进程 399
2 U7 B/ q% Y% s11.3.2 僵尸进程 401
' x$ z: h2 }) M' @! @, C% |7 l5 e. u11.3.3 输入和输出重定向 403
- V9 k& e+ ?8 z' l& I1 Z11.3.4 线程 4042 Y! t1 q! ], J9 c& @" B% b& d
11.4 信号 404: ]: P5 s. e' C% R
11.4.1 发送信号 408
* \* ~0 x) Z. w11.4.2 信号集 4128 `+ m9 W* X9 Y! v0 ~3 B/ a
11.5 小结 415' f& N" o4 S. @! z& c( v$ c) G3 j
1 Q* C( y j4 H0 [) a3 ~
第12章 POSIX线程 416! N- p! r- R4 c" ]4 y8 H7 B
9 X b4 o: H3 l; v* T
12.1 什么是线程 416
1 T" B! `% n5 ?! R0 Q12.2 线程的优点和缺点 417
$ `9 u0 e) D6 v9 t2 }12.3 第一个线程程序 418
0 h7 ^2 L2 a# r4 r. g2 x- ]5 x* F12.4 同时执行 421* d* v+ R8 K) M3 e& M) n
12.5 同步 423
, N; J u) _- ~2 t( [( y6 f! u. c) S12.5.1 用信号量进行同步 423% B& P9 K6 t3 ~* F! ^4 p) t0 C: U+ @) S
12.5.2 用互斥量进行同步 427" ~0 t! {- C8 K n0 Q, C
12.6 线程的属性 431, [! P$ J) u. @0 t3 O0 j
12.7 取消一个线程 435
6 r% D3 U7 B# }" N/ j [+ U12.8 多线程 438; j4 {& i; W& |. _. _
12.9 小结 442+ o/ W: ~* n/ O: T
1 f9 {& z5 |* s" X" q( }
第13章 进程间通信:管道 443
' \6 s4 L3 R) @% \+ g5 j# r2 H _; G& }: Z
13.1 什么是管道 4435 r/ ]2 L% Q1 z, }
13.2 进程管道 444
# Y/ a6 R, M8 r3 L+ j" j" T13.3 将输出送往popen 445( r# e. `/ z; S5 s% Q8 M
13.3.1 传递更多的数据 446$ L/ m0 a* u: t
13.3.2 如何实现popen 447' G1 ]& c9 ~/ r
13.4 pipe调用 449
% ?, h: W2 q, C9 ]% Q; [! Y2 t13.5 父进程和子进程 451& t7 _' F1 [5 f; c* m" j6 h7 L
13.5.1 管道关闭后的读操作 453) D" g, Y. Q9 {8 i+ ^9 F/ {
13.5.2 把管道用作标准输入和标准输出 454
* l0 y. P$ Q* h13.6 命名管道:FIFO 456
1 @+ ~% R5 i( A- t0 v13.6.1 访问FIFO文件 458
" M' I- y# }7 w2 W13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464" B2 v; ]7 v) f: U
13.7 CD数据库应用程序 468 A8 |& N: w0 X. R: R! u
13.7.1 目标 4699 c& }, k' a# y, l
13.7.2 实现 469* c5 ]& R4 X6 z7 K2 ]8 D- H
13.7.3 客户接口函数 472 x4 p. {: ^6 { [
13.7.4 服务器接口server.c 4786 }, V' f8 ?% a ~4 z \2 D
13.7.5 管道 4819 d7 Y! O& `5 ~' E! {( ]
13.7.6 对CD数据库应用程序的总结 4874 u0 |& V1 j( b; r' k/ J. x- F
13.8 小结 487
9 U U. g: z1 B" _$ m7 l# f6 |" Q6 a. i' K* `% b7 ^
第14章 信号量、共享内存和消息队列 488
4 V1 l! v8 ?1 j8 U; s& F
' b: C6 j% i! U- ~14.1 信号量 488
6 d2 [0 v* v2 b0 D1 s0 U+ o6 N14.1.1 信号量的定义 489. _1 w& A$ m' @& p5 S
14.1.2 一个理论性的例子 489+ X, G- [* \( H3 I2 d, B$ S
14.1.3 Linux的信号量机制 490, f8 ?) D$ L. X: H& l
14.1.4 使用信号量 492
1 q8 i' A* q; F5 A1 s4 o14.2 共享内存 4965 _- E* }- w0 f* c
14.2.1 shmget函数 4977 b# Q, {, K, ~& Y# a3 g8 d6 d
14.2.2 shmat函数 497/ b9 [& a' m% @" v1 g6 ~
14.2.3 shmdt 498
6 f3 h; V/ {% K9 @3 y1 B14.2.4 shmctl 498% u: n4 g3 \# S/ E3 q% C
14.3 消息队列 502
5 K" L' g* o; C7 I) R7 R, A( W' U14.3.1 msgget函数 502
+ L, q6 }; J2 H/ [; x. J& V14.3.2 msgsnd函数 5038 Q o* M! X+ Q7 p$ h
14.3.3 msgrcv函数 503$ e, c" }3 D* j9 _$ n! [% j
14.3.4 msgctl函数 504' L; y2 z0 w: i& R0 L9 F# ?" c
14.4 CD数据库应用程序 507! u# r# V% S7 ^% X
14.4.1 修改服务器函数 5070 v4 t9 W1 W: m$ ]1 D9 o
14.4.2 修改客户函数 5093 [/ i7 `2 @0 L2 X
14.5 IPC状态命令 5110 C. s( N4 p9 |. ^. x9 G
14.5.1 显示信号量状态 511* F& w/ D1 ?1 s9 k8 [
14.5.2 显示共享内存状态 511 U; C8 D6 v; m9 C+ c
14.5.3 显示消息队列状态 5110 c k6 l: Z4 r: ?
14.6 小结 5120 c" e) F& ~; A& d2 `; g
1 l' Z* |9 H$ u第15章 套接字 5136 l# g0 M" m, q( S* X2 S
0 t7 r3 v% p+ L/ c, d' ^+ ]
15.1 什么是套接字 513
9 j# `( m; m: ~& b' T$ A) H9 G15.2 套接字连接 513
( ]$ g! H0 R1 m2 P% n15.2.1 套接字属性 517
' b# X B- P7 |6 o' p15.2.2 创建套接字 519
! c( e( r8 g% R& ?15.2.3 套接字地址 520
) X& k; Y2 ^+ }$ z [15.2.4 命名套接字 520
& I, i: S6 `2 [15.2.5 创建套接字队列 521
' ?* o6 b# V& _# C# | N+ g7 W15.2.6 接受连接 5211 p1 }) b! n, D5 ?+ a7 X
15.2.7 请求连接 5220 H1 y6 I, ?; [; P
15.2.8 关闭套接字 523 a9 ~& R1 e' t9 @1 ?
15.2.9 套接字通信 523, S4 G7 R& A! w
15.2.10 主机字节序和网络字节序 525
) p9 w& g( o1 f. V( J7 a! ]15.3 网络信息 527
4 p8 y o9 x" @4 D5 x3 W15.3.1 因特网守护进程(xinetd/inetd) 531
, d3 v- l' k) @% S3 V( d0 k$ {15.3.2 套接字选项 533
0 ]& P! k+ K+ a15.4 多客户 534, |1 V, V) ?& T& }1 k3 I2 X# g X' ]
15.4.1 select系统调用 537
8 i, ]+ d2 \# H1 ] i/ t( m15.4.2 多客户 540
8 [$ d- ]2 M. V) p+ V6 c8 g$ |: I! v( l15.5 数据报 543
, R6 ~$ a8 ]6 k4 W9 V15.6 小结 5453 C& F1 h" v, c$ r1 Y! D7 a3 _; _
' O/ [. S/ W( W2 K0 @
第16章 用GTK+进行GNOME编程 546
7 h. _/ d$ v+ S, B* V: J: |. f6 H' E$ d5 L y3 `/ j7 F: B
16.1 X视窗系统简介 546
: a D8 \0 U1 F1 H9 B. {16.1.1 X服务器 547
% B0 V. f7 R( C16.1.2 X客户端 547
a% X/ x3 M( c' T16.1.3 X协议 547! N) J4 P- R9 g+ ]; e
16.1.4 Xlib库 547
3 A- h4 k! \8 U* y# h16.1.5 X工具包 5474 ^" K6 N# }% E8 U' Q2 Z4 Y! ]
16.1.6 窗口管理器 548 f% W3 H9 K" ^0 r2 q3 l. q: e
16.1.7 创建GUI的其他方法——平台无关的窗囗API 548/ `+ F8 U" a- f1 y. ^
16.2 GTK+简介 549
) C7 X1 f7 Z& {6 Z# s16.2.1 GLib类型系统 5496 l& u- Q- u( O$ i, T& ^7 u5 d
16.2.2 GTK+对象系统 550& ^+ `2 ]/ H; x
16.2.3 GNOME简介 550# L) u# Q5 J2 c0 S
16.2.4 安装GNOME/GTK+开发库 551; ~! S7 E! g% D' N
16.3 事件、信号和回调函数 5546 ~$ M6 o* `& I2 j
16.4 组装盒构件 556" A5 |% w7 ~( r/ b9 p% [. c
16.5 GTK+构件 5596 W5 J$ a/ y6 l8 @) F! V+ q% j. x
16.5.1 GtkWindow 559" c0 j7 U: h" w: v& e8 W
16.5.2 GtkEntry 560
4 C+ r" O( K8 t3 W16.5.3 GtkSpinButton 563
4 c. E8 A: I9 }+ b# x. Q" |16.5.4 GtkButton 565
4 v8 u- O3 Y B4 t16.5.5 GtkTreeView 568
& o0 @: L2 q9 U$ L16.6 GNOME构件 571
$ Z; f k- z: v: q4 `* F I16.7 GNOME菜单 572/ T- V0 f# q! ~: W$ n0 c/ ^0 z. [% a
16.8 对话框 576
6 v. E! e+ P" Y1 E% z3 b+ V16.8.1 GtkDialog 5770 ~2 C3 N% z" W5 `! a V
16.8.2 模式对话框 578' B5 M7 C- m- D4 b
16.8.3 非模式对话框 579
- |9 \' m4 i; [4 ?1 W2 p16.8.4 GtkMessageDialog 5809 c0 J4 g- ?! S; F; R5 t W
16.9 CD数据库应用程序 581
7 ~( h6 o' c2 G/ ]16.10 小结 592
& t' j# O9 Q F7 k; K2 _+ `# B! ^& ^1 H, s6 g( Q. j
第17章 用Qt进行KDE编程 593
0 U% X- \" X# f F$ A
, q$ R7 k: {( U9 ~. D17.1 KDE和Qt简介 593
9 I2 i. Z) Q- ]# D- I17.2 安装Qt 594+ X/ [1 s( e7 Z q+ w
17.3 信号和槽 5963 X0 i6 M7 V0 \0 l; f7 ^" B! c5 h
17.4 Qt构件 602% t; w5 H2 t5 | t A |
17.4.1 QLineEdit 602
8 u+ J3 c7 i0 g- R& p3 I! \ I17.4.2 Qt按钮 605
( e. {! c2 Y, @6 b @1 W* p17.4.3 QComboBox 609' @& R. ~/ m" F2 M# X3 h5 ?4 q
17.4.4 QListView 613
% q& `( h, a7 j, |# y% ~% x17.5 对话框 615+ q% R4 I/ {( X) d/ b3 ?
17.5.1 QDialog 615
% g S8 \: S( B- e0 y) I% c17.5.2 QMessageBox 617
: g, M+ k; q) ?9 W3 y17.5.3 QInputDialog 618
@$ A7 U! Q5 V3 O& Z17.5.4 使用qmake简化makefile文件的编写 620+ Z1 T. J+ ?' @! p
17.6 KDE的菜单和工具栏 6200 W2 r/ h8 P. V# p
17.7 使用KDE/Qt编写CD数据库应用程序 6246 R, ?/ Z! f1 a( }( h. O
17.7.1 主窗口 624
: |. \7 [1 |7 u" A+ f17.7.2 AddCdDialog 6273 R1 w+ U$ D* m0 ]- c
17.7.3 LogonDialog 6295 |1 H* U& m, Q/ P- ^
17.7.4 main.cpp 6308 P* n5 c: O2 n) u0 _* Q! n
17.8 小结 632! v* \' M" _7 k9 ~; Z1 k; o, I2 d
% s9 o& Z1 u0 g V* F5 b! ^0 f0 P第18章 Linux标准 633& u( K6 H1 M6 U9 p! i& Q& w
4 V$ ?1 F, U7 Y f( q) `- w, S
18.1 C编程语言 634
; A# R7 L/ Z2 D18.1.1 发展历史简介 634
4 Q8 F5 I6 N/ P4 S; \18.1.2 GNU编译器集 634
3 M( s9 y: F3 J( y18.1.3 gcc选项 635
- K& m/ ]7 E( u, R7 |& y& ?18.2 接口和LSB 636
" t4 f* h% K+ ~18.2.1 LSB标准函数库 637
" U9 ?/ Z& a1 x: M+ x1 S18.2.2 LSB用户和组 638
0 ~5 P. i0 H# H. Y18.2.3 LSB系统初始化 638- f2 w) e! R/ y( d1 z- S
18.3 文件系统层次结构标准 639+ c1 C8 j/ N7 C- {8 H
18.4 更多标准 642
( {* K( R9 D1 Y) o, r; u. e7 D18.5 小结 642
) l0 Z4 c7 ?$ a( S! g% @* y. \0 Y( C; g, z! _, D3 k- m0 s
" D0 s, L; L8 R+ @4 m |
评分
-
查看全部评分
|