|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
( A( j& H9 |5 Q
' S: I/ n7 h/ }8 d
书名:《Linux程序设计》- j; X/ ^0 O% c( e$ v
作者:马修 (Neil Matthew),斯通斯 (Richard Stones), _" s7 ^' F2 p7 y9 R# S4 {
译者:陈健,宋健建 , O* m# |* u4 C% s8 y3 M3 Y: h; B
出版社:人民邮电出版社
! R( c, K: c" ?/ S6 `出版年:2010年6月1日(第4版)
3 }4 y4 q" `$ i- E0 R定价:99.00元$ M1 E5 w/ L+ J2 R, r4 u
装帧:平装
( V4 P7 C! |5 Y3 M2 `8 L2 n6 lISBN:9787115228215
4 X$ @; O/ K) t
( L6 h! R% T l9 m购买链接:
! Q8 e0 N8 o0 ~! i- W, D2 T [8 P( i2 |/ \2 F
' `- q' q- @) F. H% o亚马逊(Kindle)-> 传送门" F0 s( r7 b5 d
6 Y, i- H# c" ^' _9 y k9 x
亚马逊 -> 传送门
' _3 x' f+ P2 T' Y9 f- k/ |+ q% B! Y2 J" a x7 V" _: F$ o3 P
当当网 -> 传送门
4 H M; P/ U8 G. l# U0 A% t, b
- D2 K a! W/ P _" v京东 -> 传送门
5 \- `- A9 o/ H
; ^9 L7 M+ K9 {. M, ]+ J天猫 -> 传送门1 j% V" P" P3 v1 o/ a
9 R! [" U; G- E9 R9 b+ x
& Z# ?, _: v; I
内容简介:
# N. {( M, o2 @$ [# M$ M2 h) }
" C' C c: W4 U T
2 M8 H% r; t* g. T8 H3 G; R0 [《Linux程序设计》讲述了 Linux 系统及其他 IJNIX 风格的操作系统上的程序开发,主要内容包括标准 Linux c 语言函数库和由不同的 Linux 或 UNIX 标准指定的各种工具的使用方法,大多数标准 Linux 开发工具的使用方法,通过 DBM 和 MySQL 数据库系统存储 Linux 中的数据,为 x 视窗系统建立图形化用户界面等。《Linux程序设计》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。
" i J- ~$ Q4 u7 N1 F0 g! c S2 R) M1 r; `- ]( S
《Linux程序设计》适合 Linux 的初学者及希望利用 Linux 进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。
+ H1 Y8 w* i2 [6 C
* B# E& k8 N c0 U; X
( N) A' V- M- w! @3 w, R R2 g目录:0 \, R- o! [ g4 E/ k% i
" k W* H4 Z, \4 V; A
/ a) [) t' o3 u+ J* C3 F第1章 入门 10 K9 C8 G' e! Q' R8 l
( a' p; ~. @3 v7 J3 m- Q9 f1.1 UNIX、Linux和GNU简介 1
: F* r% E$ s8 {- T/ Q ]1 @3 @1.1.1 什么是UNIX 1
1 Q# f, c0 l5 [$ L, G) c- s1.1.2 什么是Linux 2
" a% {7 \1 H! s# r9 I) [1.1.3 GNU项目和自由软件基金会 3
0 {+ i- F: o4 l9 h8 [; \5 @1.1.4 Linux发行版 3
& q; o4 E2 @3 F* l3 P1.2 Linux程序设计 4
% P* g' f* R9 X- f/ b! W C) ?6 ^. I1.2.1 Linux程序 4* Z8 i9 e6 k; N3 J0 z* C0 r1 N
1.2.2 文本编辑器 5
1 o' k) U n1 F' q: b6 O1.2.3 C语言编译器 5
' H& P! i x1 c# C1.2.4 开发系统导引 7' g7 d3 c) m9 l3 m9 i" ], m
1.3 获得帮助 12, q# i: Q5 f- W- Q: R4 a3 ?
1.4 小结 143 C7 \# Y+ `$ ~ L' T2 y6 c+ @
% \ G& O I# F% D' M
第2章 shell程序设计 15
4 D) A d8 M: X. u& N* l5 C+ \- a* b3 g0 w. v0 u, Q9 B$ ~
2.1 为什么使用shell编程 15
( z! C# a1 L Z2 E- B, M2.2 一点哲学 16
: U9 @) u* _0 i+ a2.3 什么是shell 16
) f8 _5 B0 @2 ?2 y3 s+ v2.4 管道和重定向 18
; c2 Q2 S( r1 J" g+ ]) v- o( {2.4.1 重定向输出 18! c# n( O" F7 i
2.4.2 重定向输入 19; G1 {6 X9 V3 U8 U$ z
2.4.3 管道 19
0 Y9 Q, I- I" f7 r, B* _2.5 作为程序设计语言的shell 20
( Q! ?5 ?' G$ p1 [9 v5 G! v5 C2.5.1 交互式程序 20' V N1 k8 G6 v* r' I& \) k: u s
2.5.2 创建脚本 21. T& m/ T2 q4 J- V+ l- L1 H* K* Y
2.5.3 把脚本设置为可执行 22
$ U* J! |; J7 Y) N2.6 shell的语法 23
7 e d2 m+ r5 m9 } D2.6.1 变量 23
) `, X9 U, f9 e p V) T1 {( ~- Z9 x2.6.2 条件 27
+ ?! n! t9 e4 q2 Q2.6.3 控制结构 29( u/ e- U {; \- P. y: X. I- i. d3 E% I
2.6.4 函数 39
; A4 k% y; c: r5 U1 J& I2.6.5 命令 424 p* k, v) v( ]/ L: f2 q$ J D
2.6.6 命令的执行 58 v5 y6 F4 G9 B3 Z$ U% ^
2.6.7 here文档 61
B# ^7 R+ W4 t O# D; Y1 ^2.6.8 调试脚本程序 63
% o, X& P; U3 c9 l+ p6 I$ f, D# A2.7 迈向图形化:dialog工具 63 ^8 {! z7 a, e0 t4 n
2.8 综合应用 68
# L/ K# m- }6 [" [1 T; i$ i9 S! I2.8.1 需求 68% }+ i4 `- v; A' U
2.8.2 设计 682 A4 x3 C; r& v8 L
2.8.3 应用程序的说明 76
& K! |7 S7 d8 {, E5 t; ~1 G! h2.9 小结 777 p! A5 S" q; J: H; i5 g# I
$ k3 p) f9 L' [+ P
第3章 文件操作 78
5 H. D' ~3 o$ F- N2 t* j/ O# D- j; I1 i: p
3.1 Linux文件结构 78& e9 B- v) W5 S; F: |3 q
3.1.1 目录 79
3 J; u8 Q# }7 a6 B. U6 y4 {3.1.2 文件和设备 798 d5 _3 I- q. m+ M/ k
3.2 系统调用和设备驱动程序 80+ J, o) q# G7 g* D
3.3 库函数 81# n( K+ m) L9 Z
3.4 底层文件访问 82& o' g- D; m0 @2 P
3.4.1 write系统调用 82
4 i7 E8 p) K* \6 e H$ F& z+ g3.4.2 read系统调用 83
( R" c. c4 ^6 `' r3.4.3 open系统调用 84
5 q2 r$ p( Y @# w3.4.4 访问权限的初始值 85
9 `7 e: f. X! ^3 u5 H% D3.4.5 其他与文件管理有关的系统调用 88
! t; H' _' \& G" z% M7 r. a3.5 标准I/O库 91- W* i7 d: o7 w2 R
3.5.1 fopen函数 91
+ L+ C' {" H# |( ]" P- r# g3.5.2 fread函数 92! j6 D1 y; [# N' q
3.5.3 fwrite函数 92
! H: |+ m+ m5 `, f3.5.4 fclose函数 92
+ _) Y; b' s6 Z7 P% o7 _. m* m6 r3.5.5 fflush函数 93
4 \( a/ R8 `/ `: O3.5.6 fseek函数 93
, j Q" d# C- S( G; y' H3.5.7 fgetc、getc和getchar函数 93
! w/ ]/ I U/ _6 @; X8 Y4 C" F; D3.5.8 fputc、putc和putchar函数 94
# D+ u. D+ w/ `* O ]& |! H- M3.5.9 fgets和gets函数 943 M/ S3 z9 n6 r& N( l
3.6 格式化输入和输出 94' V E7 D J7 Q0 S
3.6.1 printf、fprintf和sprintf函数 94. P2 q1 I& i* C- `* W: O5 F# Q
3.6.2 scanf、fscanf和sscanf函数 966 p0 h- \6 v* w" b' s! ~
3.6.3 其他流函数 98
' y7 [6 q3 `+ W3.6.4 文件流错误 994 l+ J$ k# v0 ?- x/ f
3.6.5 文件流和文件描述符 99
$ q& u& J6 r X, `2 U! I- S7 M" Q3.7 文件和目录的维护 100
+ W: k. F4 d5 h3.7.1 chmod系统调用 100
9 v# R$ J& m7 \, i* ?) [3.7.2 chown系统调用 100) o: `8 \3 Y p' i
3.7.3 unlink、link和symlink系统调用 100
' g- Y1 V. s8 K7 s. ^3.7.4 mkdir和rmdir系统调用 101
( |2 G' U, O! S& V9 K/ n8 F3.7.5 chdir系统调用和getcwd函数 101+ S, _$ ^2 a' |4 K
3.8 扫描目录 102
& A7 T$ |# o4 h6 z3 N; p3 h3.8.1 opendir函数 102
, h- L9 x3 X6 F8 ~0 Y+ ~5 V3.8.2 readdir函数 102. G* X' p+ ?! h. E; ^1 [" U; R
3.8.3 telldir函数 103
; g8 `/ @9 }' K2 v. `3 i8 W3.8.4 seekdir函数 103
. Y2 a; C* o- h3.8.5 closedir函数 103: ?: e/ b% F" h
3.9 错误处理 106
t; g0 t) w/ D7 Q$ B3.9.1 strerror函数 106
) ^9 I9 h% \8 ?! a3 |, A3.9.2 perror函数 106
6 A. r: {$ F* _; @3.10 /proc文件系统 107 a' z+ H1 ?* \
3.11 高级主题:fcntl和mmap 1107 e: e% q J, y9 }
3.11.1 fcntl系统调用 110
' E& w6 M% v. x5 L$ A; j5 X" Z5 b3.11.2 mmap函数 111/ w! K9 x1 x( ^
3.12 小结 1138 j1 P( P) q0 l9 d% H' O) a5 O: y
" ] [, W1 [9 H" ~8 A
第4章 Linux环境 114$ k1 H L4 `" W8 H+ m& c) V
1 Z1 v3 }5 j! a# S1 V2 O, Q4.1 程序参数 114
* Y. k* v+ j9 v4.1.1 getopt 116
! p5 Y' g/ R3 {4 E+ t4.1.2 getopt_long 1186 X& v6 K2 S8 ]" K* c, Q
4.2 环境变量 120
6 T& u' ~* k5 [4 ^# S* o# E1 v: l7 t- Y4.2.1 环境变量的用途 122- R% P6 W5 w% h9 _! a
4.2.2 environ变量 122
1 Z' u o8 e" D* ^8 W4 |4.3 时间和日期 123& K6 r2 T3 ~ e1 F, Z$ y5 A) i
4.4 临时文件 129, ~7 J: D2 R, M9 d2 F8 [) K' Z3 r
4.5 用户信息 131/ W. G! k) D0 V3 y2 I
4.6 主机信息 134
9 I2 {: H+ s, M2 x+ l$ a4.7 日志 1350 ]+ K" G2 N: M1 ?) F
4.8 资源和限制 139# _: s# L1 @/ t _
4.9 小结 1435 d3 D4 Q! ?" U; s/ \( ]
5 }) d! G! P+ z2 u$ A& n第5章 终端 144
' E: V2 Q6 w( k1 I1 x$ a c0 Q, q r7 }9 h! u
5.1 对终端进行读写 144' u0 A- U* q; u6 \7 y+ V8 o
5.2 与终端进行对话 149
* d- [( u* X5 q/ P+ o& m5.3 终端驱动程序和通用终端接口 151. N+ |' }8 ]& V8 E0 J# _
5.3.1 概述 151
2 ?- j0 A+ \0 X) m/ _! }0 _! K5.3.2 硬件模型 151
. x y' U( k$ D0 [: n* X5.4 termios结构 152
2 } H0 }4 r9 a& Z" B5 L/ V5.4.1 输入模式 153
- J1 q6 Y# I% n+ h, q3 M5.4.2 输出模式 154
2 t- x2 E% D0 R5.4.3 控制模式 155
$ d. b8 g# U5 d' | }3 M4 Z5.4.4 本地模式 1553 o) ~3 {/ h7 g( V2 \- _0 w
5.4.5 特殊控制字符 155
) v s' A H3 N# P4 {& Y4 B5.4.6 终端速度 158
g/ z% q1 X. M# G% i5.4.7 其他函数 159" \- w8 I. R* h' n: F+ }, S
5.5 终端的输出 162: l5 z* v$ \9 w
5.5.1 终端的类型 163
, I, b/ H; I! h8 W5.5.2 识别终端类型 163! Z; T" n5 j3 E, ]0 g2 r
5.5.3 使用terminfo功能标志 165
* i: c9 x' |8 O% G5.6 检测击键动作 170
# M, P. r/ n8 a% d: y5.7 虚拟控制台 172/ s3 `5 P& \. s
5.8 伪终端 173
( D5 j2 ?, g0 B% w* z* F. u; Q5.9 小结 174
7 ^: T& y+ b& n$ q$ h 0 L3 [, S' l, h- `, R6 N
第6章 使用curses函数库管理基于文本的屏幕 175
& M5 ?9 I" ?$ c* a9 z' d6 j9 Y
; i4 }( ^( p- l1 l6.1 用curses函数库进行编译 175! x O* D3 ]7 i, b# {, @
6.2 curses术语和概念 176
t# x' z2 C% K3 R0 G( T d6.3 屏幕 178
9 x7 E0 w9 U9 I& U' {* ?7 G6.3.1 输出到屏幕 179: @9 c3 i6 W W2 f
6.3.2 从屏幕读取 180
# r$ V. b$ O: ~' d' ^6.3.3 清除屏幕 180
$ i5 ]$ _& Y2 |7 Z" U6.3.4 移动光标 180
/ i9 |" c. s2 X/ O2 Q6.3.5 字符属性 181+ O4 [5 `9 E9 U5 x5 |
6.4 键盘 183
+ o+ R& A2 S! \, L l% |6.4.1 键盘模式 183
2 d1 \8 p* F- Q i1 ~9 H6.4.2 键盘输入 184. v7 l4 H; @( U; a7 c
6.5 窗口 185
% i( `0 Q5 n7 W0 V, E. E z* D+ D6.5.1 WINDOW结构 1856 q$ |7 T( S2 _! O( P5 _9 {
6.5.2 通用函数 186% \6 `: ~7 X1 V9 E2 L, o/ V7 y/ i
6.5.3 移动和更新窗口 187
9 }% }5 k4 o' l5 P6.5.4 优化屏幕刷新 190
* Y% r7 P! s) Q6.6 子窗口 191
/ [$ f: n8 o5 B9 Y' o2 i* @6.7 keypad模式 1930 Y a" p' R- J7 a( Q
6.8 彩色显示 195
2 p9 b: x" b6 g- C6.9 pad 198# m( [# K. T0 e* B4 O1 r# i5 Q
6.10 CD唱片应用程序 2001 @- J }* _7 z, [$ S
6.10.1 新CD唱片应用程序的开始部分 200
' j6 C8 C. n. @$ l& c6.10.2 main函数 2028 h# A* z' B$ M0 R9 A
6.10.3 建立菜单 203
9 V. I/ t- G/ s6.10.4 操作数据库文件 204/ j& N" a3 ?" g& s: }, v: t
6.10.5 查询CD数据库 209
. E9 k- Z3 x. W' Y$ o. \, ]/ \: r6.11 小结 2135 |- l* b; {8 D: t& Z3 S: v3 M0 s
; M1 j+ ]. v; |2 s4 K第7章 数据管理 214
0 n2 s1 B- N; s
4 [% e* {1 O- G* Z1 P, |7.1 内存管理 2146 c ^8 |. o( G# p
7.1.1 简单的内存分配 214+ a) A/ l! ?+ i& ^# T0 D" ~6 ^0 ~: \
7.1.2 分配大量的内存 215( o% s7 m4 R+ _/ z9 H. f
7.1.3 滥用内存 218; v" ~6 f- F% ~2 r& A
7.1.4 空指针 219
- n. e$ f) b7 t% m, ~7.1.5 释放内存 220" A% v/ B9 L' R7 t9 Q8 M/ }! f8 [
7.1.6 其他内存分配函数 221
" h' m( n" r# ^5 r# }7.2 文件锁定 222
: v% F$ K' I' q& w9 }6 I. u7.2.1 创建锁文件 222; U0 \7 | e+ |* I, N
7.2.2 区域锁定 225
2 y E# u( Y3 ^2 b' @2 y$ j" I7.2.3 锁定状态下的读写操作 2277 y+ ]) H5 l, R( I& f
7.2.4 文件锁的竞争 232( d; c4 S! G! J
7.2.5 其他锁命令 236
- f) u1 [5 F/ q- R1 }7.2.6 死锁 236; W1 r. W+ ^4 q
7.3 数据库 2370 B7 l. H1 Z" I
7.3.1 dbm数据库 237- \7 F( C- a1 x/ d$ }8 U# w
7.3.2 dbm例程 238
9 [# c" p" K2 _+ M( a7.3.3 dbm访问函数 239
# K; t5 ~% t6 ~ d0 X7.3.4 其他dbm函数 2429 L1 \% r- O* g0 l1 A% ?
7.4 CD唱片应用程序 244
& V, c0 @" f. B2 _! M2 v7.4.1 更新设计 2441 J* x$ {, p- u! \7 H; L+ Q
7.4.2 使用dbm数据库的CD唱片应用程序 2459 ] J5 p" h5 B5 O
7.5 小结 262
) X8 B) u+ [$ P. C0 b: @
) s% ^7 x P' m. I. T第8章 MySQL 263; K7 T1 o0 X4 |- n9 X7 J% q
6 `% G' _& A0 h8.1 安装 263
/ o% K @" |% u& Z. p2 z) S8.1.1 MySQL软件包 264
$ v% H- Y1 J7 A/ C, K- x; X8.1.2 安装后的配置 266" T6 v8 }0 ^& { D5 H2 t# ~! F* [
8.1.3 安装后的故障修复 270
7 q. @7 ^3 j8 a$ Z8.2 MySQL管理 270
2 g6 {: ]: ^1 s8 ^, j# w4 V: h8.2.1 命令 270
- X: K8 ?2 I9 g! d4 g i8.2.2 创建用户并赋予权限 274# F, a) U# w3 A; M- p
8.2.3 密码 276# \( f5 c7 q! h: K v
8.2.4 创建数据库 276/ b) A* V/ J6 x7 W/ w
8.2.5 数据类型 277$ j0 B# ]3 p/ n, j: G* [5 _
8.2.6 创建表 2782 n! s5 l& m; z, U7 w! ^ a
8.2.7 图形化工具 280
% y3 V4 j# g0 o4 ?6 y8 L( @ n3 ]8 e8.3 使用C语言访问MySQL数据 283) Y9 s9 k* b. M- B5 x9 d7 M& a
8.3.1 连接例程 283
1 A0 {3 _ |. Z( I8.3.2 错误处理 287
! `# @- S; x4 s; Z# T/ g8.3.3 执行SQL语句 288
/ T5 S5 f- E6 w8 e0 [8.3.4 更多的函数 301+ w$ y8 x) r! R& f2 N L
8.4 CD数据库应用程序 301
9 z v$ z1 Q' C( d% S X0 Z+ n8.4.1 创建表 302) e+ s! K: H" S
8.4.2 添加数据 304
2 M2 r, ~0 N4 |9 W$ q1 i0 f, E' s, x8.4.3 使用C语言访问数据 3069 ?& W) k6 \% S1 f% Y6 c! q
8.5 小结 316$ ]9 j7 N, c' q' D4 x0 `
& C) W( T$ r) {8 i0 A* C第9章 开发工具 3177 ` c" ?! l/ ?, u" {( @: ^3 v* k
. {# `2 j4 z5 |7 g9.1 多个源文件带来的问题 317% r9 g) h0 `- n2 M1 ?
9.2 make命令和makefile文件 318, Z0 J4 G. M* Y) k: t( Z" Q
9.2.1 makefile的语法 318; G5 L- v2 K, T- i, y* p/ F5 K5 C
9.2.2 make命令的选项和参数 318
" c, b7 [ c) m: d9 A2 R+ h9.2.3 makefile文件中的注释 3210 W2 H, N7 p8 E) Y+ B1 ~% L
9.2.4 makefile文件中的宏 321
: o8 w" R% Z" O9.2.5 多个目标 323
" B/ y" K: w6 |9 P9.2.6 内置规则 325! p0 i1 L+ W$ N' i' {7 y/ Y. W
9.2.7 后缀和模式规则 326
- m$ |, N* t/ ]* ]8 S% Q9.2.8 用make管理函数库 327; o* i0 P; m5 N3 T; L4 U
9.2.9 高级主题:makefile文件和子目录 329+ _. B) X) S( Q# W2 |7 s
9.2.10 GNU make和gcc 329
/ I$ t1 ]) g, J2 F" ~ J" E# y9.3 源代码控制 330
+ D: r D; F7 H" u: E1 G( E' i; W: a9.3.1 RCS 331 D( E C- }/ g% g' E
9.3.2 SCCS 336
6 H# b: v, J8 a/ P* ^9.3.3 RCS和SCCS的比较 3362 D+ f! g: M1 E6 f6 G
9.3.4 CVS 337- w0 R" W# ?. {, H- \5 Q; g) o
9.3.5 CVS的前端程序 340% Y: d( p0 R( g% h
9.3.6 Subversion 341
( |& x3 @* Y% z- u9.4 编写手册页 342, o6 x3 l4 `! g. q, B
9.5 发行软件 345
5 ^3 J* _- |6 _( l9.5.1 patch程序 3459 J9 F9 s' y* x8 ^
9.5.2 其他软件发行工具 347
# _2 s1 Z- a3 Y8 l9.6 RPM软件包 349
% v% y1 s- d3 L, D9.6.1 使用RPM软件包文件 349& F1 k0 K) L$ f. \( s4 r8 C5 L( r7 {
9.6.2 安装RPM软件包 350 p* p* f, c, h5 K* B2 M; Q1 s: W1 e
9.6.3 创建RPM软件包 3503 H. v- N" p/ ]( ^- c T8 J, c5 o
9.7 其他软件包格式 358
, c6 h& B: J! U9.8 开发环境 358
- `) T/ w9 E9 p# _. M7 Z" \' q% _9.8.1 KDevelop 358 I6 U3 d9 J3 s ~* `# G
9.8.2 其他开发环境 360
. d5 b! p5 E/ f: ?( {. q9.9 小结 360
9 L- [$ N* J- t3 z; S H
, c% Z* ?; R2 v6 y+ E第10章 调试 3618 m+ R7 q5 K) Z- p" Q, k
; y9 s0 j: a9 L7 o- A6 I10.1 错误类型 361/ U( G+ d+ `) U# Q7 Q6 \. z! S1 v
10.2 常用调试技巧 362
" l5 M2 Z0 E9 }& a: i10.2.1 有漏洞的程序 362
# L. z+ i |1 a* `7 B0 @% |, b10.2.2 代码检查 364 I* o& [$ e5 V2 W/ [0 s% n
10.2.3 取样法 3652 x* @5 |1 M Z" E
10.2.4 程序的受控执行 367% [2 V4 g/ }. Z, y V" n/ y
10.3 使用gdb进行调试 368
9 a) p+ ]+ W2 A$ o6 n: I% C U& k10.3.1 启动gdb 368
6 h0 t! t. x- H2 Y7 H; x! ]; ]7 R10.3.2 运行一个程序 369; T4 d! T5 P* j; f! D* D
10.3.3 栈跟踪 369- z* d5 r! c& K
10.3.4 检查变量 370# B$ E+ {7 o3 L% o& B$ z
10.3.5 列出程序源代码 370) S( f( |# {% t e1 y9 A
10.3.6 设置断点 371
' W3 l2 W$ {, j2 J" m% o10.3.7 用调试器打补丁 374
8 B+ G: e4 D/ {' ]' P10.3.8 深入学习gdb 375
; G: `% o1 ?0 V" Q6 h10.4 其他调试工具 375$ d6 }; F2 O. L, I
10.4.1 lint:清理程序中的“垃圾” 376: K! b. @- ^6 Z7 D8 U0 ~2 D
10.4.2 函数调用工具 3787 W W+ z' Q. o, K
10.4.3 用prof/gprof产生执行存档 380' `) f! v5 @# z F# @ `# n
10.5 断言 381; U7 @# B8 L4 V8 ~; K- K
10.6 内存调试 383
1 ?9 p2 e. i+ H# s" U: Q5 f J10.6.1 ElectricFence函数库 383
0 n( S1 N% E# q- M7 W# K10.6.2 valgrind 3844 k; O g) \" s( }
10.7 小结 387
) S0 q# \8 l( d/ w0 \5 Z
: S) D& M0 p% [ G) O第11章 进程和信号 388
2 _3 b& L7 O/ D4 ~- z( o" ^" b( y$ J( l( J
11.1 什么是进程 3889 l& C. ^3 }0 A# o5 F
11.2 进程的结构 388# r' i6 E$ I* k, ?
11.2.1 进程表 3902 F/ w$ n& l4 v. A) i
11.2.2 查看进程 3908 h; s" p- _( |4 _; u. @" \
11.2.3 系统进程 391
f; F8 ?9 `% ^9 A. y- c4 e11.2.4 进程调度 3936 _; U8 D0 u/ | S2 g) E; M
11.3 启动新进程 3949 S2 D- E& E) Q" S1 [( @
11.3.1 等待一个进程 399( G5 J! s; x: w( F! @
11.3.2 僵尸进程 4019 p2 g. c& f- P
11.3.3 输入和输出重定向 403
8 f7 s5 ~4 X! W0 n1 y11.3.4 线程 404
! \% J, I- y' a- U( q8 M# z# [) S; r# ?11.4 信号 404
+ A6 x. i M. z, w! W11.4.1 发送信号 408
$ Y% {5 D; U7 J5 W* j" I11.4.2 信号集 412) V, y! N g7 K+ m% J
11.5 小结 4154 o5 b% e* x" `; f* @( Q& k
; Z# T7 n( Q/ P, }- z3 e$ b: t
第12章 POSIX线程 416' [6 m3 b7 G! H" @: {
& |; P8 V; N# T8 y9 ?
12.1 什么是线程 416
; m. O6 z1 q' }: w) O y8 L; E12.2 线程的优点和缺点 417; M; Y* k4 v0 t/ e9 v
12.3 第一个线程程序 418
' F. }+ N' |3 Y3 J12.4 同时执行 421
6 ~+ o! Y( F; U5 J/ F2 X12.5 同步 423, T# V/ O& t0 s* |6 C) ?
12.5.1 用信号量进行同步 423" z: ]) T' p! h- a
12.5.2 用互斥量进行同步 4277 s- I5 w& y& w* g" B1 _
12.6 线程的属性 431: I& E9 O$ Q8 Y7 { u: n7 s6 |, v
12.7 取消一个线程 435
! Q9 _$ g7 a. r4 z' C$ G. Z12.8 多线程 438/ ?) B4 |0 X& Y* X3 t% G
12.9 小结 442
m5 r& V; ?7 v, ~+ Z# E
6 U/ a; S( m6 u0 e: O4 H2 t# S第13章 进程间通信:管道 443
8 i ], T: p- ^7 a& E
) k7 E" M# ]$ a8 g* f& Y13.1 什么是管道 443
* A3 U3 e, F7 E9 P) |- r13.2 进程管道 444. ^4 C$ Q* L6 K" T$ S
13.3 将输出送往popen 445
* {$ z" q$ K8 ~13.3.1 传递更多的数据 446
9 c: i4 i6 i: T& ], L13.3.2 如何实现popen 447
! u5 \0 a2 ?+ _0 H- }13.4 pipe调用 449
4 ^# F4 s# s+ ~6 }: @' H) ^# B13.5 父进程和子进程 451
2 R! O- s& V9 T) O5 {8 J13.5.1 管道关闭后的读操作 453
! z1 u7 o7 s; b13.5.2 把管道用作标准输入和标准输出 454
" ]) |, h, J) x. x" p13.6 命名管道:FIFO 456% l5 f8 b& F) H; x8 u
13.6.1 访问FIFO文件 458
& ~, m7 H; k. V. ?: O13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464% ~/ Z# N. Z/ L" s6 T
13.7 CD数据库应用程序 468/ J$ A$ q4 Z3 V& l
13.7.1 目标 469
- G4 P' @) V# G; Z3 o# y13.7.2 实现 469 s4 t3 m! ^* K1 g
13.7.3 客户接口函数 4721 a- W' T( u2 N, k+ P4 U% O0 \3 I- z
13.7.4 服务器接口server.c 478
; E1 w, l; \: |1 k/ C) C9 t13.7.5 管道 481
: c+ Q) Q7 _# X$ a8 Q; d13.7.6 对CD数据库应用程序的总结 487
. s0 Q, \9 ?! K4 w# @13.8 小结 487! J% E% X/ v+ P. D: E+ e; q5 W
! T! V% ~! [( w k0 J
第14章 信号量、共享内存和消息队列 488. z0 d' x6 ~; z2 M( Z
: K. {0 S( n7 Q2 T8 n6 B9 T14.1 信号量 488
% t4 Y) s3 R, ^) C. ^, V; I& s14.1.1 信号量的定义 489
- t/ x9 b0 g1 i9 t% N14.1.2 一个理论性的例子 489* e& F( k- X T( W9 U8 C& y
14.1.3 Linux的信号量机制 490: O4 Q5 f' e) m
14.1.4 使用信号量 4928 Q0 |% x# E/ R, e
14.2 共享内存 496: I% ^& I8 s' N) ]
14.2.1 shmget函数 497; H/ y7 b) ?" A
14.2.2 shmat函数 497; u7 E0 p% C2 n8 r; @( A
14.2.3 shmdt 4984 t. q! o% h$ c0 f6 Z# E* M
14.2.4 shmctl 498
2 z4 b8 Q9 F, ? D1 D1 V( F14.3 消息队列 502$ ? b0 t$ _" T# O: B0 V4 O
14.3.1 msgget函数 502+ P# P$ \# c( v$ T8 ?1 P' `, a4 @
14.3.2 msgsnd函数 5038 g* \) `- Q: y: p
14.3.3 msgrcv函数 503- I8 t& l6 a1 u
14.3.4 msgctl函数 504# [4 B, Y9 D9 [
14.4 CD数据库应用程序 507
, M2 M9 y" p! n( \; j5 O+ v* \/ Z2 U& F14.4.1 修改服务器函数 507 {% D5 f# s8 ]) w; W/ y, q
14.4.2 修改客户函数 5093 A. J, j( \$ ^
14.5 IPC状态命令 511( |1 T7 Y3 ^9 w* G5 l6 f2 c
14.5.1 显示信号量状态 511
. ~1 Z% A8 ?& _ o14.5.2 显示共享内存状态 5117 `# Y! u- F. ~
14.5.3 显示消息队列状态 511
$ W5 c/ r, d- ^) [14.6 小结 512
6 ~6 u4 h7 }0 a2 I7 @7 E
& X7 X: K; D9 z" l第15章 套接字 513
- L4 {: V. f1 T4 n- f
0 \5 F$ b' v; ^15.1 什么是套接字 513; b+ R0 O: {# }; P
15.2 套接字连接 513
+ A: Y+ I' Y- k& ? D `) ?15.2.1 套接字属性 517
$ }4 ?! G2 B1 O8 }4 F15.2.2 创建套接字 5197 {7 @- Z# ]8 o& u- p
15.2.3 套接字地址 5206 y# f' N5 d. M% V6 [$ b# s5 {. V& A
15.2.4 命名套接字 5208 `# s! l, L. X- f; ~) u
15.2.5 创建套接字队列 5211 p/ o4 w v8 W5 R% Z
15.2.6 接受连接 521
2 z. T9 e# \; n9 z# ?2 `/ O+ H15.2.7 请求连接 522
: k% Y& _8 w. Z+ O+ f15.2.8 关闭套接字 5233 t h3 i4 `" D6 }. T, N" Z
15.2.9 套接字通信 5234 G; J8 `# u4 ^ Z. d5 J2 F
15.2.10 主机字节序和网络字节序 5254 E1 ^. M+ c4 u3 ^2 s8 a) z9 t
15.3 网络信息 527* D p2 u: y. h! j
15.3.1 因特网守护进程(xinetd/inetd) 531. `. j6 V9 R9 E5 E
15.3.2 套接字选项 533! d" @! {$ h( C+ X9 J/ K9 T
15.4 多客户 534
6 [/ q1 ^# L# @$ x, d, c15.4.1 select系统调用 537+ U0 |8 k' x. R( d* H* m' F
15.4.2 多客户 540. C% F' S7 r+ ?- g6 m
15.5 数据报 543
~# j6 A* E; p: @9 f15.6 小结 5452 n ~) \) X$ O0 `: Q
w9 x# n. N9 A第16章 用GTK+进行GNOME编程 546+ F% A, U* _" F+ R j' G& v1 C
2 T6 s/ ^3 h. x5 q$ z7 Z Q
16.1 X视窗系统简介 546% Y2 O. n$ \. l8 b O L5 f# w* Z
16.1.1 X服务器 5473 f7 B: s: r7 k6 m; s N
16.1.2 X客户端 547
7 l- n8 B/ U0 `& ?16.1.3 X协议 5474 b) [$ m$ B# }/ H1 P
16.1.4 Xlib库 547
: s/ } J# a9 b8 a5 e3 z: H16.1.5 X工具包 547, s* f0 ]3 W: ]) [
16.1.6 窗口管理器 548
0 l0 n6 t1 m0 Z2 \' ]- t16.1.7 创建GUI的其他方法——平台无关的窗囗API 548
8 B3 \! T# d* ^6 q( x16.2 GTK+简介 5490 U9 u$ k' Y8 m2 T5 \$ ^
16.2.1 GLib类型系统 549
; R! @$ n2 e# Z$ |+ b16.2.2 GTK+对象系统 5507 q/ ?/ ?) R- F" Y$ v$ F4 w4 l
16.2.3 GNOME简介 5503 ]' S/ O8 N5 y, N- s9 p& G5 R4 \
16.2.4 安装GNOME/GTK+开发库 5519 D3 S* s+ j, ?% `. C/ [
16.3 事件、信号和回调函数 554
( O0 o# h, y. y% E$ g% C# b16.4 组装盒构件 5566 w { e) d9 ?. K) d: a# D
16.5 GTK+构件 5594 Y$ D( S' q8 n& w% y
16.5.1 GtkWindow 5594 }& U R* \0 I; K+ O' v* |
16.5.2 GtkEntry 560
0 J5 M1 M1 a! ~0 j5 ~( i. w16.5.3 GtkSpinButton 563
& U& s3 O2 W. ~7 h1 G16.5.4 GtkButton 565
# G1 ~% P0 [- f1 j- g$ ?16.5.5 GtkTreeView 568, Z: q0 v2 T3 Z0 [" u
16.6 GNOME构件 571
) j0 p) W" D: d! T16.7 GNOME菜单 572
# x. U- o, B7 E$ i7 M16.8 对话框 576
* y0 |+ T# A9 P9 J* f; t8 u$ B16.8.1 GtkDialog 577# n4 n1 m" K# F: Y7 @
16.8.2 模式对话框 578
+ b# C( j0 N+ s. U) L1 S4 K16.8.3 非模式对话框 579
/ T. v7 J' ^1 J! B* [) l4 X16.8.4 GtkMessageDialog 580
" Q+ U$ s z& W- _' _: B9 L16.9 CD数据库应用程序 581! r* ?8 I$ I. ]9 g2 B
16.10 小结 592
+ c/ c/ R+ I! b4 ^4 f2 H" i% E! Y& p9 P V% z4 ^
第17章 用Qt进行KDE编程 593, n0 R$ J1 ?, G! y# n9 A- A# j6 r3 v- i
5 o2 Q! N8 I4 `6 t l
17.1 KDE和Qt简介 593
! H5 B& o" J5 D5 H2 |- e$ s17.2 安装Qt 594# u3 w' b& P! E! b: f- w0 S
17.3 信号和槽 596$ j, _, G( Y4 j0 w
17.4 Qt构件 602
& R7 j2 I* f4 c! ~1 m17.4.1 QLineEdit 602
. `* \+ p& b# s; V+ S6 h0 y17.4.2 Qt按钮 6053 g9 [4 I W) a- _1 l; B% T
17.4.3 QComboBox 609
1 l4 g5 i( r w+ w" j17.4.4 QListView 6133 z9 N7 t, Z6 V) T$ m [
17.5 对话框 615' J: L- e; Y8 _! K7 H
17.5.1 QDialog 615
5 I5 J+ I- k! E7 _17.5.2 QMessageBox 617
& P& m7 B; K( Q! E4 A# t17.5.3 QInputDialog 618
: C+ }/ N7 W, \# [/ h# b17.5.4 使用qmake简化makefile文件的编写 620$ z% G6 U, t9 f4 ~. [
17.6 KDE的菜单和工具栏 620
# _/ t" M& y* K1 F6 B17.7 使用KDE/Qt编写CD数据库应用程序 624
5 U; O( f# d/ G* q+ U b17.7.1 主窗口 624
' G a5 i+ t& z, J7 k17.7.2 AddCdDialog 627& b7 ^0 G" y, ]1 s( P
17.7.3 LogonDialog 629' _5 c3 H4 R8 W7 J% M
17.7.4 main.cpp 6300 `/ `7 z% N* l6 Z' S0 H, T0 k
17.8 小结 632
' u9 X+ W( [6 L$ l
; ]# m5 O2 `# i2 S0 k+ R. E! ?6 |第18章 Linux标准 633- M" P" i8 m8 D" c
" i1 V3 t# [# X' W18.1 C编程语言 634% N( Z, P3 c% D! l# E* Q1 `
18.1.1 发展历史简介 634
% w4 }" s5 ~* E" n+ X18.1.2 GNU编译器集 6342 s! w! [' ]$ ]( j- g* ]& s% s
18.1.3 gcc选项 635
) l& M) ?6 L) S18.2 接口和LSB 636. n- e4 L! F7 f3 d4 Y
18.2.1 LSB标准函数库 637$ _' _# C! S# {2 }& X! ]
18.2.2 LSB用户和组 638* F$ l7 u0 B& ]* T4 Z$ U$ J5 [4 \' J
18.2.3 LSB系统初始化 638+ N" }, @$ r h
18.3 文件系统层次结构标准 6390 y6 N6 [, m8 R7 S
18.4 更多标准 642
% R/ y: H: f7 ?9 x9 d0 l9 H( Z18.5 小结 642
- i. s b0 _$ t% N4 D3 j% D8 @, h* L) z. |
2 j' `' N( y8 Z. h- \) _ @ |
评分
-
查看全部评分
|