|
Java电子书:Linux/UNIX系统编程手册(上、下册) 格式 pdf 电子书 PDF 电子书 Java吧 java8.com
3 V8 |! O+ ^0 @7 h5 T% e7 u% y
' T" r8 E' [. a* k8 \% _( U
9 l. R/ o6 a; `" |& S编号:mudaima-P0070【Java吧 java8.com】6 `# }# Y& v" k4 e# U, u
( _. u0 ?5 p( [! B* [9 p) x6 r
0 e* I9 n- S. p2 s$ n" t
, M- a |' b# j; V3 U) LJava电子书目录:上册
' k; v) @$ f4 N+ ?. `' k第1章 历史和标准
# T* U7 @ }6 \6 }) i- j8 H3 x1.1 UNIX和C语言简史
7 v3 W) F: Y6 p; B! v* |1.2 Linux简史
% n, I$ C$ @) T% l. s1.2.1 GNU项目 4 V0 i9 O3 u5 K6 a: y9 B
1.2.2 Linux内核 + B% P" s' A( H
1.3 标准化 0 K- D$ u3 \7 A' o
1.3.1 C编程语言
, E/ k6 D* L' x) Q8 j6 V1.3.2 首个POSIX标准
5 `& Z: b! F6 c6 a' U5 M; Q/ N. |1.3.3 X/Open公司和The Open Group 1 t& w7 s! D4 {) T1 O5 c5 o
1.3.4 SUSv3和POSIX.1-2001
! D6 C, Q+ s& B, |" a; B1.3.5 SUSv4和POSIX.1-2008
: {# [( }: q4 n% z! C1.3.6 UNIX标准时间表
: u8 L+ A: k. p; ]+ i6 i6 U3 [1.3.7 实现标准
8 O. @2 ? |4 r# C* f; W9 O4 v) J/ m1.3.8 Linux、标准、Linux标准规范(Linux Standard Base) ( ^7 O( r. W* ~& [ g
1.4 总结 & ]9 F5 |5 [3 ~4 o7 u; d0 f9 t
第2章 基本概念 ( D2 o j4 f) l2 @4 w+ \
2.1 操作系统的核心内核
. a' B/ t# C% }1 ^. e9 Q2.2 shell
* M" ]# `* U4 V& L3 ]& R2 i* ?0 Z2.3 用户和组 & T _" D; o3 {0 f( G4 ~' F. `/ y
2.4 单根目录层级、目录、链接及文件
( d; h3 m) l4 A7 Q8 S% O5 S2.5 文件I/O模型 % S8 W7 q/ K Y3 j. }2 Z4 Z
2.6 程序 2 Y: D* n; `9 c& }/ w
2.7 进程
/ M1 m- F* }# y1 f+ Y% Y) h; N2.8 内存映射
9 u5 G$ I( \9 H1 N/ s2.9 静态库和共享库 " d! a+ ~) d# f# ? V
2.10 进程间通信及同步 % b g+ y) g" t. s% S
2.11 信号 1 a! X# o- u' e8 q! X" B
2.12 线程
6 `$ z1 Y- [! H" k6 F# T2.13 进程组和shell任务控制 : @* B7 g& E% d: }
2.14 会话、控制终端和控制进程
) @8 _% Z6 h. L4 V Z# H! K2.15 伪终端 6 @' L8 Q1 O; Q3 ]9 ?/ @
2.16 日期和时间
2 @% p8 B4 N; T2.17 客户端服务器架构 W1 R- k8 _3 i" e; C0 K0 K8 y2 N
2.18 实时性
/ h( {! f: A9 M( v: h/ V2.19 /proc文件系统 % ~& u: @* y2 d. V7 P5 }& `7 o
2.20 总结 * @2 J% S# A8 I- z# N8 |
第3章 系统编程概念 2 F7 _8 b/ g- R3 G `
3.1 系统调用 # X. x6 z( d8 R3 M, N+ Q' ?9 ?
3.2 库函数 8 V) v, } r' {) R# Q0 V8 b/ h
3.3 标准C语言函数库;GNU C语言函数库(glibc)
6 W9 V0 L) X$ k& A" M1 J6 n9 B0 W3.4 处理来自系统调用和库函数的错误 % o- b7 m- E# B" t. p" z3 N
3.5 关于本书示例程序的注意事项 / t) d) K3 g* ^& s% j/ t& x( A
3.5.1 命令行选项及参数 / ^6 I' P B3 q+ Y1 J, s
3.5.2 常用的函数及头文件
7 i# B9 d/ P% c3.6 可移植性问题
- s7 U9 D Z0 h3.6.1 特性测试宏 - C6 K: U) ^) r1 n
3.6.2 系统数据类型
. h+ U4 [1 Y) S9 m: e3.6.3 其他的可移植性问题
6 u5 T2 K6 M( B8 K* H3.7 总结
1 f2 L: ~: `0 e" w( q1 T! T" b3.8 练习 1 A& C8 w. Z4 B. P5 ^* h k3 X
第4章 文件I/O:通用的I/O模型 & C) O* F4 a' k
4.1 概述 7 [% E- C/ ?" @& t# d: D/ z
4.2 通用I/O
, s% t1 H# x7 r* X1 S( K4.3 打开一个文件:open()
1 [: N/ |* h# i4 C( Y9 m4.3.1 open()调用中的flags参数 3 g- b* b9 X7 a7 Z0 F' e
4.3.2 open()函数的错误
5 m/ C; e+ X/ c3 T0 ]4 W1 o4.3.3 creat()系统调用
N4 d: Y# l" [- \0 T' Q) g4.4 读取文件内容:read() + d* [. v8 w+ O$ ? c
4.5 数据写入文件:write() 9 v9 J! v8 x7 d; x
4.6 关闭文件:close() 7 H4 @7 k5 k$ }
4.7 改变文件偏移量:lseek()
& C/ S0 I+ A- ?4 X" i% z4 }4.8 通用I/O模型以外的操作:ioctl()
1 x. D; _, u$ z4 }- ~5 d7 k- {+ q4.9 总结 , {0 v G" \( g. z) }
4.10 练习
+ E1 I- ~8 F8 B+ O" s第5章 深入探究文件I/O
& }# h8 H, N& i# h% `: x n# q5.1 原子操作和竞争条件 0 z& u/ t+ l. Y: ^& x
5.2 文件控制操作:fcntl() 9 K" }* a& `4 D2 X- k0 q
5.3 打开文件的状态标志
4 z+ X( U9 x( y$ l& z0 l5.4 文件描述符和打开文件之间的关系
j: X4 b0 d; R5 a8 N8 K- L5.5 复制文件描述符
: n, S0 s8 \6 Y) l" ]3 b5 T5.6 在文件特定偏移量处的I/O:pread()和pwrite() 4 w8 x% F. g- Z
5.7 分散输入和集中输出(Scatter-Gather I/O):readv()和writev() / ^( r& D$ s" q% u9 z
5.8 截断文件:truncate()和ftruncate()系统调用
/ M; F6 s4 I! j5.9 非阻塞I/O . i0 f/ O) B9 h5 g
5.10 大文件I/O
0 O$ q s0 R" @6 M1 j0 |5.11 /dev/fd目录
) Z1 Q7 O* }% o" N5.12 创建临时文件
" t; K2 z& }7 E9 ?: R5.13 总结 2 g+ ]* F! p, z8 g
5.14 练习 ! m4 W& c/ _2 A1 |0 g9 S$ ]3 Z
第6章 进程
& S9 n$ }0 N! ^: E6.1 进程和程序
3 u4 R9 @2 C3 ^! ]% f, E( j+ E/ I6.2 进程号和父进程号 # I f1 }# D# Y. I9 k5 [7 T( T
6.3 进程内存布局
2 ? m- d: [8 C* i* b6.4 虚拟内存管理 $ w" n- I) o# ~- g$ P8 }
6.5 栈和栈帧
. h1 M) ]: @* R! d6.6 命令行参数(argc, argv) : ]7 N( ]- }- w/ P$ U
6.7 环境列表
/ D5 F2 N! k. n; a6.8 执行非局部跳转:setjmp()和longjmp()
5 ?6 b/ ]% B- m" v6.9 总结 $ c- ]- M7 G2 F8 D/ \( E# `
6.9 练习
! I" o, B, G" C第7章 内存分配 5 o: I& p; @7 t! k
7.1 在堆上分配内存
7 y7 b. N# z9 k/ _7.1.1 调整program break:brk()和sbrk() - }# m1 E$ R0 q2 c0 t% o
7.1.2 在堆上分配内存:malloc()和free()
! H8 `1 Q2 R. I. V6 H t7.1.3 malloc()和free()的实现
7 @) N" w: z# M, p1 A' Y7 A7.1.4 在堆上分配内存的其他方法 ' M: ^, H4 ^- d+ l
7.2 在堆栈上分配内存:alloca() 5 J! M- f6 D" s4 t7 X# l# ?+ E
7.3 总结 8 K9 J& ~5 s4 v# s2 h4 c
7.4 练习
6 Y4 J y: P% ^* H$ C& t* t第8章 用户和组 5 m3 Y& v0 }) n7 n+ w& u. a& \
8.1 密码文件:/etc/passwd 2 {/ b5 |) r- b1 ?7 m' l% o
8.2 shadow密码文件:/etc/shadow
$ h* _ w6 X4 Q8.3 组文件:/etc/group
9 r$ f9 O. K1 o x5 Y8.4 获取用户和组的信息 # H1 w' G" f- u! ]5 \
8.5 密码加密和用户认证
' @) i0 k/ V) \* R7 {/ [8.6 总结
! e: l C' P( q9 M6 y8.7 练习
: [ j, H- S: p* s0 b第9章 进程凭证 % @, D' Z" S( D" u; Q( r
9.1 实际用户ID和实际组ID
+ l1 z9 R+ R l! [8 f9.2 有效用户ID和有效组ID
/ _! ?: f8 m j. \" R2 o/ h: W k9.3 Set-User-ID和Set-Group-ID程序 8 \5 q7 n% q' ]) }( R
9.4 保存set-user-ID和保存set-group-ID 5 E$ q( W( A2 X( _% V1 v
9.5 文件系统用户ID和组ID
( S3 F- \6 [6 t; ?; _, q9.6 辅助组ID 7 |" q' W% A% U$ Z! J
9.7 获取和修改进程凭证 + M0 o% I5 Z7 I/ ?
9.7.1 获取和修改实际、有效和保存设置标识
8 I" F, }, }0 F& z1 z& z9.7.2 获取和修改文件系统ID
/ K$ @8 g( c4 }- `! x- C8 A) `6 E9.7.3 获取和修改辅助组ID # K' e6 X2 u! J' G( Z8 _# o
9.7.4 修改进程凭证的系统调用总结 ; [: E) s L a% \9 Y5 _7 r8 l$ S! x
9.7.5 示例:显示进程凭证
$ W8 b" y2 x* V9 ?2 k: }, v9.8 总结 7 {3 r& k' C& C4 H1 n
9.9 习题
: C. X b6 \6 Z6 O) H9 o* K+ j第10章 时间
! @, {5 M5 l* ]+ G10.1 日历时间(Calendar Time) 9 y. x( _+ E# ~) b- A% n" `
10.2 时间转换函数
' U4 \% @) }7 S6 @5 ?10.2.1 将time_t转换为可打印格式
: Z/ X2 r" A# n1 Q+ m2 a* j2 W10.2.2 time_t和分解时间之间的转换 3 o" d/ a* O# `$ `+ |
10.2.3 分解时间和打印格式之间的转换 ' J1 K* L4 B! F" S) q1 |; X
10.3 时区
4 F; n1 s- E% H2 O; s1 z* _6 N10.4 地区(Locale) / O- S' R% u+ Y: W- z4 b
10.5 更新系统时钟
, K: R- ~3 Y# C. i/ n' T10.6 软件时钟(jiffies) - h% n9 f& {2 v3 N- ^) R
10.7 进程时间 # i* L$ [7 Q6 _0 R2 s F2 N% L, O
10.8 总结
# N& n) O: F5 D5 A10.9 练习
* l$ P3 e7 a. r( w, X: Y6 K第11章 系统限制和选项 1 K( }- `1 e% g8 d+ o3 \5 M% Y3 x
11.1 系统限制
3 f/ p8 L% O9 F: A) c1 ]11.2 在运行时获取系统限制(和选项) 5 m0 A# R( P% j, C# j) \
11.3 运行时获取与文件相关的限制(和选项)
2 H2 E7 ?. }- y6 s11.4 不确定的限制
6 K5 F' L! I: [! x- I- E11.5 系统选项 ) i: w" v. X+ z0 e5 ?! W) F3 S
11.6 总结
8 P+ k9 r+ }5 v5 m11.7 练习
/ a5 a8 T' a/ [第12章 系统和进程信息
( l2 X" ^7 I- k, D$ ^12.1 /proc文件系统
" Y8 W& N `* J4 L12.1.1 获取与进程有关的信息:/proc/PID
+ _7 I. e6 U" E% B: a9 k12.1.2 /proc 目录下的系统信息 . p; ?% V" a6 {8 g
12.1.3 访问/proc文件
) u0 @9 B+ w3 D& Q4 c6 [12.2 系统标识:uname()
5 t5 W7 t' T- [0 L8 g$ z12.3 总结 3 Z+ C% B$ [# g1 z
12.4 练习
- g) k; Q7 c0 I- i第13章 文件I/O缓冲
% t/ J6 S1 H" }% l. m- T9 K13.1 文件I/O的内核缓冲:缓冲区高速缓存
* e! H7 l, z8 A5 v* P13.2 stdio库的缓冲
9 l$ w. R3 {; c( s f( ~6 M13.3 控制文件I/O的内核缓冲
6 l' }6 ^; ]2 }8 }13.4 I/O缓冲小结 , ~* Y0 c4 O& p/ l, m0 T
13.5 就I/O模式向内核提出建议 7 e4 o* {7 \) y$ m
13.6 绕过缓冲区高速缓存:直接I/O
X; g+ ?$ C2 o% P: r4 [; N13.7 混合使用库函数和系统调用进行文件I/O ) X/ F f- T% l
13.8 总结 - F9 V! r; q" t9 L9 l/ @
13.9 练习
8 b: K- N# A" S! ^+ S+ e" Q第14章 系统编程概念
0 e5 g1 M6 k- E' Q- V14.1 设备专用文件(设备文件) * w5 V* K# u: D8 D7 g: r# e# t
14.2 磁盘和分区
6 Y& d' x0 Q: j9 ~6 v* ?14.3 文件系统
: ?" \: d0 s8 y/ _3 r1 @, d% }/ X14.4 i节点 " x9 t5 c# w ]' t
14.5 虚拟文件系统(VFS)
j: J2 I* p% T$ f14.6 日志文件系统 ) m' e, x4 }" k: ]- i8 s
14.7 单根目录层级和挂载点
% v% a J4 l6 K4 w14.8 文件系统的挂载和卸载 / Z, t$ D( Q) x& Z" I
14.8.1 挂载文件系统:mount() 0 S# B- F8 J# \( i5 `4 r
14.8.2 卸载文件系统:umount()和umount2()
, a, B/ e) j) ]1 [+ @4 J* f; m14.9 高级挂载特性 7 L2 v8 P" y/ Y+ z
14.9.1 在多个挂载点挂载文件系统
, `4 q; Y4 H3 S6 V3 T14.9.2 多次挂载同一挂载点
0 q$ _1 B' A) [* {, Z14.9.3 基于每次挂载的挂载标志
' l Q; }5 U8 o) K14.9.4 绑定挂载 : B: Y t/ O8 x! l
14.9.5 递归绑定挂载
' Z M* ^9 [# D$ q14.10 虚拟内存文件系统:tmpfs % w2 Z2 Q" ^$ I/ B' J
14.11 获得与文件系统有关的信息:statvfs()
3 M( L' m6 ]* g a+ a14.12 总结 & n+ k0 D2 f* q6 \# q% g# f
14.13 练习 - T( N4 n# l6 o5 j
第15章 文件属性 # S) f0 \1 [8 j9 c! G
15.1 获取文件信息:stat() ' ]. j! H1 T+ H. s
15.2 文件时间戳 ^0 L- g- i# S) Z* g* p. _: R4 v
15.2.1 使用utime()和utimes()来改变文件时间戳
) @ u3 j% j0 i8 K5 n15.2.2 使用utimensat()和futimens()改变文件时间戳
. `( X: F$ k' Y& f" w15.3 文件属主 * Q: _. w" e& e4 h9 l0 x
15.3.1 新建文件的属主 ( t( A2 Q( L" E- s/ y" u5 M
15.3.2 改变文件属主:chown()、fchown()和lchown()
5 ?; E4 N5 I" {, x; ]15.4 文件权限
' f O- Y7 u! C9 J15.4.1 普通文件的权限
) R, a' N" x3 q' f15.4.2 目录权限 ( P& A* [; d1 z. `/ i" P6 _; X
15.4.3 权限检查算法 1 f n0 M/ ?- w8 j& }9 R
15.4.4 检查对文件的访问权限:access() 5 B) u$ s- \: n( W* q t8 Q
15.4.5 Set-User-ID、Set-Group-ID和Sticky位
5 |$ M& _* u4 i; u* D/ v$ s15.4.6 进程的文件模式创建掩码:umask()
! D1 \6 E; D/ S( _) i15.4.7 更改文件权限:chmod()和fchmod()
& G) F) b6 z2 V15.5 I节点标志(ext2扩展文件属性) 1 }" W" Y0 l6 }4 m
15.6 总结
0 w* y# S+ T4 X! h- G9 g15.7 练习 ) l# h9 P8 S* `# l5 S: g; q
第16章 扩展属性
9 r3 a, f7 B& f. _) s2 _0 T16.1 概述 $ |1 H: i9 z2 s( `5 _; N0 @ @, X* X
16.2 扩展属性的实现细节 ~: a, T+ @( S8 W! }
16.3 操控扩展属性的系统调用
* c* ] Q% y: k p16.4 总结 $ `& r/ `1 p: x$ V
16.5 练习
2 m6 F/ Y# T6 U1 ~" [第17章 访问控制列表
7 J, Q7 r3 @: H C17.1 概述 - \1 c* T0 J, u5 `, n
17.2 ACL权限检查算法
% L" R6 Q* J/ t; K' b# H, I17.3 ACL的长、短文本格式 / G Q8 i+ K8 Q% P- o1 g
17.4 ACL_mask型ACE和ACL组分类 : z* b/ K4 \' l1 S
17.5 getfacl和setfacl命令
$ E6 |) I. W' c, |" a17.6 默认ACL与文件创建 5 v9 `( A( o1 [0 \
17.7 ACL在实现方面的限制 # A) l7 }8 i) d3 Z- k3 ?
17.8 ACL API " V6 F' Q5 W' _. D+ O' B! {9 a6 n; U
17.9 总结 - R1 t7 x4 g+ s. I) e
17.10 练习
2 w" k, n, R( G3 ~9 n5 c第18章 目录与链接 % X: C/ C0 A0 o& V% T$ N& i; C' b
18.1 目录和(硬)链接 $ X8 i! @; d- c! P' z% ^: H5 Z" m
18.2 符号(软)链接
* c$ V! M! j% R+ [6 c \18.3 创建和移除(硬)链接:link()和 unlink()
% f7 t2 \" q! s2 `- H百度云盘下载地址(完全免费-绝无套路):2 p$ a; p4 F5 v ^! d& m+ M
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|