- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40053 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12727
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
嵌入式Linux网络编程·笔记1·Linux C 文件编程* A' z5 V. r5 e, M' Y/ d
Linux C 文件编程 – Linux I/O编程! \2 a. Q$ { u3 m( A
% N% G( B+ f0 H" Y( a1.为什么称为I/O编程? Linux一点哲学:一切皆为文件。: k4 R2 A; ^1 ~: c9 N. |
?' i( f- U# h& e! Z2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
+ C$ p+ y i, L& ?% c* [* ^7 W. C4 U5 n" [, q
3.Linux为什么会选择把所有资源抽象成文件?
, T/ z7 V1 @- [! L0 r' s! |' L$ n+ b5 V" v1 C! Q6 D2 ^
1)文件本质就是字符流 – 二进制;
- F! G; @9 X' A6 l1 X0 H6 C. {5 D& ^9 R
2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);8 Z; D& J3 q- a$ n, R1 @& b% d0 I
, s' b9 | {/ j1 m
3)文件系统已较为成熟。+ T3 P c) E: S3 G$ T0 F" B
3 u8 k) G: W* f/ d
4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)
* M/ l2 ]/ U: X! t" k9 @) i6 c0 {6 \+ Y2 u }, q+ C3 ]0 r5 s1 z' n
C语言:fopen、fread、fwrite、fclose、fseek;
/ d$ y: ]5 a, H, B0 [+ j t. j% O1 O* y
Linux:open、read、write、close、seek。9 `. {4 \3 h( A7 P( ]
3 w: v D/ [, N! F' [
5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。
9 r ^; S+ G+ p7 v
3 C2 L- x3 l* ~6.在Linux下如何操作一个文件?
0 b1 P. T" d" S. h/ F( t* ^
4 _. G, Y9 P& ]3 f 1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;$ n) t4 N( E* s
1 i a& m0 n( D! ]" E. l 2)文件id:无符号的整型 – unsigned int fd;
}3 M$ `- d) w+ \; d3 C. W! u5 U& W9 Z$ m
3)文件id的限制:unsigned int – 有取值范围;
; G' {# h( J: e) p: O
" m% p- T$ {9 I0 N2 ]1 G% D 4)用户自己创建的文件从“3”编号开始。
; T& U% K0 W9 t) L% F+ {, Z2 r' w0 [9 d0 }4 T
(注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
% e- L' U" I& s2 k* {: v
8 R7 e( Z/ g2 J8 N7.什么时候文件会有自己的id?
8 y1 `$ J" o" ?3 |1 B
- ]( I' A9 M; _, k 动态分配,当操作一个文件时,操作系统才会给你这个文件的id。 + U9 {# n+ e: c: j! ]
6 F, v' ~' E. Z9 m! w/ H总结:( H; p2 J. k' R" ^1 K
嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
+ l3 S) L9 y$ {) r$ N- q4 y. m9 w嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发4 ^: p/ K$ F- E* u2 i& y4 I
Linux操作系统的组成:用户空间、内核空间
|- t6 ?& X6 F. B3 J& R# ~为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问' }( H i) J( v2 w3 }8 N
用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)
1 X; t+ G2 W" ~* }什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务
- I3 ^' [: G3 x$ Y- B用户如何发生系统调用?调用系统提供的API4 V1 X: K- I1 Y
API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
( U8 @1 e( K5 [( J, X如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)
3 f- W; e( g# q' B, Z( R学习方法:头文件、函数名、函数内每个形参作用、函数返回值
+ g" f! A; d/ ]) [2 L3 @
' A* f2 ^7 h; {* J- y/ {5 I
! \6 Q) x6 n. Q4 N1 S( k, i' E' f S* S' w- n3 @- H- S9 A# |2 t
) E) C0 z: `- |6 B& b
|
zan
|