- 在线时间
- 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 文件编程 U2 S8 p! E# p* l8 z3 F
Linux C 文件编程 – Linux I/O编程; f8 w1 s6 U6 X
) {; t* ~, A) {/ T& [! L
1.为什么称为I/O编程? Linux一点哲学:一切皆为文件。& o7 ^6 p f0 T: o% s
* v6 q' T: X* m0 w# Y2 Z& t
2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
8 O' ^. o- r5 l4 D5 o4 C) k: T1 n" R% `' a: H3 S0 k/ _( _
3.Linux为什么会选择把所有资源抽象成文件?( X. R0 c& P u
) T" m6 n1 A2 p* U4 q6 {6 b* {
1)文件本质就是字符流 – 二进制;7 G$ ~" m8 A. a0 h4 d
. K; H$ N; e- ^* J7 f0 x) [4 P$ h) ^
2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);/ z: f/ g/ y! J- R5 ~5 O
6 X F& b0 k, d0 d: G# Q2 a; [ 3)文件系统已较为成熟。
0 `+ y- s( W; R/ M ^" d! q6 {9 x7 e
4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)
+ U# V- }* V4 ^( N
! Y2 g' R4 u) ?. m- O7 T C语言:fopen、fread、fwrite、fclose、fseek;; A8 {* L2 @0 V3 ]
, F1 Q: V# @9 ` Linux:open、read、write、close、seek。
6 l; f' g8 i- x- i* E. T$ Z8 m ?- Y8 @: v c
5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。
% p" A' C, o# C9 w
, \4 o5 w$ {; g# E% X0 N8 L c6.在Linux下如何操作一个文件?3 q4 @: @. I; o8 i9 P
$ q& _, [+ @' z5 k- e; ]" }* a
1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;
( w+ o: N+ C# f W+ M8 ^
* |) n4 S* H; q. C! |% s( Q 2)文件id:无符号的整型 – unsigned int fd;+ g" e Y* |, E0 p; @. Q8 P* f
! c9 G, t/ o& e& B: w |$ C, v
3)文件id的限制:unsigned int – 有取值范围;
5 N. K2 ^# z+ N1 w8 J' t2 K0 q {( j% R" }5 a1 R* {& p
4)用户自己创建的文件从“3”编号开始。
7 J5 {, @1 C7 d( I
# g6 F0 @+ H" L7 F4 t$ Z( `* a (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
9 S' v% X( W' a$ @6 }' {# b1 J1 o! G; h1 U, y* K* v
7.什么时候文件会有自己的id?
. [- n6 P! |, q6 q8 x
2 J3 |. \- G" R) d' [, [4 { 动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
7 I# h L2 L& W
3 E+ W6 R) {, m总结:+ x, _# z& @. w$ P$ p" [7 C# w
嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
3 k7 a" B2 F" L& x6 ]嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发& \+ v& k- S! B: d# Z
Linux操作系统的组成:用户空间、内核空间: v" n; C$ G/ \
为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
8 t* f% N8 |$ P$ i3 V) ?用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)
+ F$ G, Z, \2 G5 i$ O# w什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务& h0 O5 Y& J D
用户如何发生系统调用?调用系统提供的API
/ I' P) Q& K5 U' i* QAPI:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
) Y5 a6 @1 N) G7 ?7 f' A! e+ m+ H @如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)8 p r+ n F# G. w4 |7 @& i
学习方法:头文件、函数名、函数内每个形参作用、函数返回值
% `5 I9 @% @9 i2 b1 \1 C: n6 I8 K+ R' K0 k
- @" ?+ X$ |8 ?5 i) N
# v3 _/ N H) j4 e: g4 Z8 X5 r. }1 g- P& y# `
|
zan
|