- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 39951 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12696
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
嵌入式Linux网络编程·笔记1·Linux C 文件编程2 v; O! I1 ~6 h' ]) e% t9 ^/ u
Linux C 文件编程 – Linux I/O编程
% ~0 k- B0 H$ y. S* u$ o6 `
& [" y9 u& [' v% j/ R1.为什么称为I/O编程? Linux一点哲学:一切皆为文件。+ K* h# K1 I7 @$ B
. ]$ v. C! |8 P( v8 Q+ j0 m4 P2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
c0 i8 s5 |7 r% Y1 v% S6 t
@% G1 K/ Y' F8 j& R: H. Z" e4 @3.Linux为什么会选择把所有资源抽象成文件?
) P. o. s7 }* B/ w2 A( f
: k e7 J& T$ b) _% ^) k" | 1)文件本质就是字符流 – 二进制;
3 ?! A# Q4 V- Y
K% b5 i8 d+ f$ F 2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);- _. I1 |7 ]5 U. ]; E
) Z& d3 i, A# s' } 3)文件系统已较为成熟。
8 r# `( n i, V2 N/ d w4 R' s( _
1 e- M8 T# V- L1 L4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)* Y4 N3 g$ y: [
4 w+ G3 Q6 Z! M6 \
C语言:fopen、fread、fwrite、fclose、fseek;$ A5 K7 i; h+ ~) f2 e: C
6 B: {9 \& C1 ?5 g X
Linux:open、read、write、close、seek。! b8 |% x; |3 D$ A
; d: x; g ], o5 i
5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。
) U% Z* u5 R' ^8 R% ?# ? C8 l. q: i% N7 Y/ O
6.在Linux下如何操作一个文件?. o1 r) P1 y8 ^- p$ i* J) |; D
/ n& X$ q3 F; `* Z% x" X
1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;
. l2 K# C. k, K+ k
2 ?1 Y- N2 }! i p 2)文件id:无符号的整型 – unsigned int fd;! l. P) z4 {& E$ ]
; }9 `. I7 Y% E+ H3 @6 Q8 q 3)文件id的限制:unsigned int – 有取值范围;
0 a) ]9 m3 ? V$ M6 `0 p1 F
0 `, @( g. x" r3 w* K1 J 4)用户自己创建的文件从“3”编号开始。# ~1 Q4 U% ]. j: c* U
( ~8 p9 r: I# T+ ^7 R/ |2 B5 x
(注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
! f+ R% Z( w1 }$ F3 a r4 C. u- |$ G8 i& _; E
7.什么时候文件会有自己的id?
+ [! L' k. W9 {2 ^+ p! A' l- G) e9 d+ e/ U5 X
动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
! j; d n5 H4 O0 x! B! Y
5 {3 ? W* S7 \3 R$ D! d总结:
6 V. _2 n" @; [. q9 |嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
/ q; Y2 a0 y$ {! D+ _) s" p/ x嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发' F7 M4 `7 N ~; O$ d* ~7 J
Linux操作系统的组成:用户空间、内核空间
* F7 v/ Z5 k$ F7 z$ \为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
3 Z8 R1 R* ~. t6 M用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)
3 G5 ]4 d% W! V* R6 _& a: V什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务1 u. ^" n+ N3 x8 b2 @ v
用户如何发生系统调用?调用系统提供的API+ H, r, c6 Z3 E" h
API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
9 I! ~9 `2 m3 ~3 l# |如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)% ~! n4 l/ N, a
学习方法:头文件、函数名、函数内每个形参作用、函数返回值( W9 L, R& z( G5 v( z
, J# B, @: X6 u# Z) ^
4 H$ H/ \# v3 r8 Q7 e! b$ E$ g; h5 b. h( L
; N: e# H$ N# [9 z) f! O
|
zan
|