|
课程目录
/ A$ y8 K! [( N7 ?Linux系统编程之文件篇/ T; V C% J+ J( U
01认识计算机系统(上)
5 A% O, k* {# w7 n计算机系统组成8 ?$ m* |$ Z+ V/ X7 @) u- g5 [ j& o0 v
计算机系统硬件组成7 j/ w# N5 g5 T& b
总线" t# O! n2 ^; K: T4 z
I/O设备
V" ?% s7 E }7 {' ?内存
a6 y! ?, D9 X5 S! _% I处理器(运算器+控制器)% Z2 {+ ?. P8 o# d: L& o
( I, u0 ^( V1 H. G+ a
02认识计算机系统(下)
) V: S6 [8 [; m2 A# b什么是操作系统3 p4 k- v$ `5 @4 r/ ^
Linux内核模块
3 [4 _1 I9 C- C# S+ S* v操作系统管理硬件8 S! |; J4 [) \% H1 u# l: t
操作系统三个基本抽象
1 V4 W2 @" ~: `; [$ e进程上下文切换
1 K6 j( {1 ]! C7 Y进程虚地址空间
" l9 T$ A+ M- T* l8 |虚拟文件系统(VFS)5 m$ E5 o7 E3 Q9 D2 s
- ~3 Z/ Z- \! L2 G, e* ~- ?+ p
03系统编程介绍
8 a- z$ I+ S' ]4 N6 c; Y系统编程与应用编程
, ?, a. M. H% {3 _系统资源2 T# a8 `( N7 f$ O t u1 \3 k# W
系统调用$ ^6 Z2 N" P d2 V' `. u8 |& X! f
系统调用与C库关系* ]$ k- G' b2 z$ K/ W
错误处理4 w% R# U5 x+ @9 v
9 Z% N& Z' d: K0 W" m7 [
04文件与I/O(1)2 @' ^% ]1 y6 J6 I: J1 t" r8 _
什么是I/O8 I I% m# k8 |3 E
文件描述符 {7 U8 S: c6 _4 a3 }4 a: b6 s
文件相关系统调用' c4 Z, f! \3 L* W
7 ]; ^! g9 e1 ^: Z) ~05文件与I/O(2)
/ a% G& j: |. W) i0 }; h2 Jread、write
+ S7 J5 f$ e. Q) t- x2 Xlseek
+ z- j1 L) V: E9 ?目录访问(opendir、readdir、closedir)4 J, ^4 K" `! F% z$ N/ `6 d
+ C1 J; S, [; E$ d* J" k3 }
06文件与I/O(3)9 O% |, H5 B6 u! c
stat0 `+ R8 G+ l! Y# n. L5 U( c$ B
stat结构体
: X* y5 T; J6 Wstat示例* [3 g# o) a7 W0 i) C3 G {
: h) P9 u9 c) \5 ~' X1 I3 P5 L
07文件与I/O(4)+ l) H9 q- e: d, O/ i+ a
文件共享3 h' H5 |4 |/ g4 s- O- |
打开文件内核数据结构7 c! B. Z' l8 U: W4 W+ f
一个进程两次打开同一个文件$ u, B5 X1 } [2 g6 L+ ~3 r
两个进程打开同一个文件+ A/ L' s0 V+ M- {4 e F
复制文件描述符(dup、dup2、fcntl)
6 N. q: b; D! @. [" t) C0 ^7 H" r+ u2 i9 E u* L' p
08文件与I/O(5)6 K! J! C2 @4 l1 Q' a
fcntl函数
' l3 g6 a0 A6 I6 N9 J. i4 |fcntl常用操作
1 O( D, p$ x% p9 M( ?. u' S" @文件锁
# u& l- [2 [5 q$ N
1 {9 S3 e: H. vLinux系统编程之进程篇
4 @5 E4 x7 z5 r W09进程(1)1 I; C* D& W$ T$ P3 F' f
什么是程序4 r" Y) r$ `& y3 b2 u# Y
什么是进程. N+ P8 V6 C! Q8 o. n& ~
进程数据结构
7 \9 u! Y6 Q/ z1 @& q' r5 K/ E8 h进程与程序区别与联系
1 W0 c2 H2 Y& Q# d9 c# l) ^/ Z$ L! o, S
10进程(2)
+ U! J$ K8 z* Q- \/ j进程状态变迁
- A* S: @- O& O8 l: \* O8 P0 h8 W进程控制块. Z$ W7 ]7 W: ]
进程创建8 P2 r# ^4 s9 S K9 y0 c
进程撤消
6 [+ y& r3 K2 ?( h1 B( @: h, h终止进程的五种方法
$ F7 J. M5 O: R9 E5 k
9 I; W. u( j9 d) R# w11进程(3)5 y3 V1 T4 h0 I# Z
复制进程映像8 O& F& E0 h' m7 `2 J, y4 o
fork系统调用
% t5 m0 R4 W$ ~: R孤儿进程、僵尸进程' a8 d# @( u6 x1 o2 A Q* r
写时复制5 i0 C2 K' [ Q" A" u
, w+ S$ M* y+ p! U7 \12进程(4)' q; F2 e" x# z
fork之后父子进程共享文件
3 \9 w% b( l I2 N5 hfork与vfork1 r2 P5 \& B8 ^% q; _' x0 n. p+ V
exit与_exit# C7 R& ]7 n% B3 k+ L+ H
atexit1 W/ P7 g# J& {6 y( G/ R0 A
execve替换进程映像(加载程序)
2 s5 M& M* d |( a8 f, F3 q9 n7 g1 p
13进程(5)/ d9 q: J4 [0 Z% v& M# n
exec替换进程映像
* t6 U) R) W8 s2 C, G! oexec关联函数组(execl、execlp、execle、execv、execvp)$ F: B* u9 a: z6 T v' M( F
) K) ]( g' A& ]2 P14进程(6)
7 t) R8 P) v' y. V1 ^' t& ?SIGCHLD2 b9 Y3 e, O3 ?' U! E( [0 M% M* H
wait
. Q7 o$ h0 u2 Z. g* |1 Twaitpid
: a7 w/ \, r7 O" Z僵进程1 N+ v$ |2 Z* O& L Z
system- Q$ w, s2 \9 ^/ H6 P
% [4 a, a" |; T3 P4 l+ s. t15进程(7): G8 c1 ]- A5 y' c5 r; X& _5 w
什么是守护进程! q) h) a- _$ }, E+ x. f0 B: a
守护进程的创建步骤( P; c. W( h3 \- E6 A* a
daemon& L0 I0 Z3 u( P( H5 S/ c
- V( [. i; u" U5 w! ]( x
Linux系统编程之信号与管道篇
/ n1 w2 E, ~) F9 J# C; `16信号(一)
- s7 P( L$ }, }2 F R1 q中断
7 c) E' w+ Y4 _: u- g+ l" `信号# Q& a* f: @+ y4 t$ j. }( I `
信号与中断7 p$ M# {0 V/ N
signal V8 |; X2 t- @( S# j
. }" `2 F% I% K" O
17信号(二)
1 d1 P4 m" r' k信号分类
p& h! H, Q0 i# ^, g$ Y7 C. @可靠信号与不可靠信号7 |5 `4 ~$ Z5 W7 _' n. a3 C
信号发送: n# Y/ t8 i ?! r+ T
pause
/ R' o) M/ U# J* C+ g9 }
' f& U2 ` |) {# f18信号(三)& f1 B" B" O, ]0 k
更多信号发送函数
. p+ a i- D z0 x可重入函数与不可重入函数, W5 S" s4 h. `7 X& m; d7 |
不可重入函数示例' A% U4 @9 ^* O, Q! V2 t& {. |
) ^# F% y. l; o1 p4 M& k/ l, D19信号(四)
) t% X1 m( \$ u& [ o# e% [信号在内核中的表示3 Q) p$ N4 X/ w
信号阻塞与未诀
2 l0 j. t5 L; b信号集操作函数5 B W: _: U5 t% |) K
sigprocmask
" n" U |+ v: f5 K5 J+ }& P) O1 F" c% {
20信号(五)
( S$ n- I6 V d/ ?2 Wsigaction函数2 B0 C% D' @9 E
sigaction结构体- z5 b5 [7 R3 Q
sigaction示例
2 v" M/ d ]" o& {8 V
% P- a0 r' Z" T, f* Z, r21信号(六)
$ M9 [/ B( v2 Osigqueue函数
5 E- s9 h9 I* Q# nsigval联合体
6 P6 |% Q+ _' Q% @3 ~. bsigqueue示例; |3 H0 [4 ]: I4 B7 i& T
. l4 M# [) o; u( b1 V22信号(七)( A% _; Z# G/ K; E
三种不同精度的睡眠4 ?6 U( x/ |( Y8 S1 Q/ G' [
三种时间结构
. w) A' D: |+ v3 y8 ^! jsetitimer& V- i& }( I; D# U& _" {* ~3 D
getitimer3 U: F% w3 [& g/ Q/ K( B
- E0 s; h3 F1 c& D' K
23管道(一)
& r# u: G7 ?% T9 T( k管道
) G" F$ c2 i- B8 J3 y匿名管道pipe7 r! M6 k6 a _$ c
管道示例程序/ E4 R& g/ j l+ C+ F# Y
, r. w& z1 I* c
24管道(二)% J: j" m# B8 h) W
管道读写规则
. W. R. \9 n t* l; n% h! h& {
9 q* s. V0 a7 U. n5 R3 U$ F( D25管道(三)
" U4 e& T/ s5 a- Y8 S" I8 L命名管道(FIFO)
6 ^, W2 J M0 u匿名管道与命名管道区别; n7 Q1 J# B% a$ P. F! u2 D
命名管道的打开规则! Z( Q& m; c) t# @
命名管道示例程序# I( [5 M" `7 x+ r; }* c8 J4 S- I; }
5 R3 H! }) h& J, N
3 L H4 X# d# u# O! J; {8 S! y' S% A; ~, [: i) Z+ @
" q3 ~" d! C* Y/ T! O
|
|