- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40298 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12800
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
嵌入式Linux网络编程·笔记1·Linux C 文件编程1 f2 K% V- [3 Q, A. y( p4 u
Linux C 文件编程 – Linux I/O编程3 r: M6 O& R; C$ p
l# ]: ~4 G( Y$ I1.为什么称为I/O编程? Linux一点哲学:一切皆为文件。
/ Y& Y3 L, w5 D& O, W8 F. Y) M! l' W
1 @ x6 O# W3 d) U: t; r" [ v2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
( j7 w6 F1 {4 m( ]$ ]
( k2 y u' Z5 }, {3 F2 K3 m9 Y7 i3.Linux为什么会选择把所有资源抽象成文件?
7 r0 G. Y9 ^' R" z+ @7 S0 B( w; ]. ~ f" ^% \0 d2 c8 K# Y
1)文件本质就是字符流 – 二进制;
* W! q, @# g7 B9 Q# |0 z% l+ w2 f, M
2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);. d0 p) i' P. ?& h
. ?2 b: d0 S/ ^0 t5 M 3)文件系统已较为成熟。
9 ~& T- J, r# l1 ?% E" d5 _/ T- i, P* `( N1 O
4. C语言VS Linux文件操作(二者区别 – 是否有操作系统). V6 g4 U" ~$ j8 O
% a3 m- c7 |6 ^# y9 |* Z
C语言:fopen、fread、fwrite、fclose、fseek;
; ^. O. x! ^9 R: F& m+ U N0 j0 u! X* w3 L" n! z
Linux:open、read、write、close、seek。
5 Y8 k( E# s- _# b/ z
" B$ F3 p/ g7 b! h2 g1 n$ W5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。9 S: {. P4 v2 I3 j' M; R
, q7 j7 g% D" f' S ?9 `6.在Linux下如何操作一个文件?0 p, f9 J' ~ t, P2 w) [
1 I5 T6 {" Z9 [, I; e7 v+ s% f8 S
1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;$ v/ r: t7 E* K5 R3 A# w7 g4 M
! \- B3 d8 ]. _
2)文件id:无符号的整型 – unsigned int fd;
2 q0 a( @2 U/ }6 n% z3 e' [/ N. A. w2 P4 Z1 }) [' A
3)文件id的限制:unsigned int – 有取值范围;
$ ~+ m$ l7 ^, a" O- c% S8 R& d- q8 o, A1 s8 g7 c. Y0 w9 D
4)用户自己创建的文件从“3”编号开始。
1 Y. q+ l0 n$ t2 b: _0 B" s9 V& y) o" {
* F( f) @$ G4 y (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。( k. G" F p1 l
7 e+ S) h; H/ i. k& J2 L0 {7.什么时候文件会有自己的id?: k6 q0 {! R- P2 I, m* c
( S* n" {0 I1 y; b 动态分配,当操作一个文件时,操作系统才会给你这个文件的id。 . l+ m, _( F" _0 Q& q
0 X5 ]' _9 E. y8 E8 u6 ^3 ~总结:6 U0 e( |; \* v# F5 ^
嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
7 d6 v2 R; m7 q, F! {& s嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发
* @6 W; O/ Q0 J" tLinux操作系统的组成:用户空间、内核空间, s& l+ R2 v/ ^9 g( p
为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
1 b8 S: m! }; w. h/ g$ c用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)' l0 | _' N: }8 R* U I6 R
什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务 I3 \( w' n: D7 ?4 O9 Y& _
用户如何发生系统调用?调用系统提供的API% J; `1 y9 O% Z
API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
+ M* w5 O$ e. s! r如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)6 s2 q+ Y+ E+ c' k
学习方法:头文件、函数名、函数内每个形参作用、函数返回值
; g4 C L- m0 F8 c A7 N- ^& H, f5 X6 h7 A; M; D2 i( b* y
: J' k) r1 T+ A
$ \7 r9 h! Y$ b' N* l
* H9 ~6 b! [9 n" u* _% Z. y |
zan
|