- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40330 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12810
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
嵌入式Linux网络编程·笔记1·Linux C 文件编程
' J1 d3 M& ^' _; p% k- i' k( \Linux C 文件编程 – Linux I/O编程
7 a! r: ]: j5 O- C' W/ o
( b0 V4 V3 \: `8 T1.为什么称为I/O编程? Linux一点哲学:一切皆为文件。+ L, u" Y( E1 c2 t; t# g
0 \1 n6 w$ F& q: s# U- y2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。1 C. c! F/ T! I
, Y1 _( ` R% d3.Linux为什么会选择把所有资源抽象成文件?
; ^) ~8 {2 K; Y9 j% f; X. Z$ K
/ u3 B' [ B. K" q, i" ?5 b 1)文件本质就是字符流 – 二进制;) Y; L- V' }+ e
, [( B$ \8 ~& x% v5 H
2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);
2 b% I3 b: U, {8 p: P: L
i8 M! n$ ?. y2 z9 P( H 3)文件系统已较为成熟。
) Z; u; E' t" b" d# E
8 E3 v- C0 _) D% Q! W: j4. C语言VS Linux文件操作(二者区别 – 是否有操作系统). j3 \7 n D" r; e5 G. u
0 {! Y/ a! W0 Y3 j% S& e1 v C语言:fopen、fread、fwrite、fclose、fseek;
5 n! Y6 d7 F: g3 O- c# a
6 ~% {% }: Z, w: t" l) s; k) y0 } Linux:open、read、write、close、seek。6 _5 ]# u! U. g5 Q: D0 l
; Y+ a& | ]6 r4 w5 g) D2 a) Y
5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。3 q( `4 I- W, q
3 o" N9 K# Y6 [. ]+ i; ^$ {7 E6 N
6.在Linux下如何操作一个文件?2 y$ G( e2 j; a t: `% D) o
. a$ i7 f7 o# o" e( F+ `7 a
1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;5 j0 ~5 i- ]& H& s9 l+ r7 T* w
U4 ?3 B4 |% i8 t9 }9 h
2)文件id:无符号的整型 – unsigned int fd;
& E0 a! C& d4 ]0 ^# v7 J0 G7 Q$ O
. f J- U1 X% {" Y( Z6 @7 v) A8 q 3)文件id的限制:unsigned int – 有取值范围;
5 x/ M" G3 J1 A+ p0 z
+ Y K l6 \ Z0 k6 ~ 4)用户自己创建的文件从“3”编号开始。
0 S6 E, M0 o% B& c) ]7 v
$ \$ e6 k7 j/ B* r8 r (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
0 k; x6 E9 K4 E( H
8 i/ B0 `2 R$ e3 }5 B7.什么时候文件会有自己的id?6 S2 }! X) E8 C2 i
. ^8 m5 V! ^/ \' A 动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
% m6 F, g5 n. ]! s/ m" Y6 P/ F/ W
2 u: k7 f0 e! O$ u) L+ C( h3 W总结:
) l' G- M+ v) e& {6 w5 H( H# N嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程# A/ K& s: B7 M' B2 j+ w
嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发
/ L% R5 N( |8 j- xLinux操作系统的组成:用户空间、内核空间( a E4 c& r/ T
为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
$ @9 r- {8 R1 \% ~! W* d( I用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)% t9 k$ I, U8 q$ `
什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务! ]: t$ K. L, C; K0 E$ I) ]
用户如何发生系统调用?调用系统提供的API
- V% B+ ~* J( p! z7 A' v' I3 `API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)- c* R; }# Z( U2 W
如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)
' M$ S$ J3 Y/ G7 }6 U学习方法:头文件、函数名、函数内每个形参作用、函数返回值+ C$ S0 p6 P- k/ T" o- L
- |* w% s3 F. `, ]9 X0 ~1 m @8 J
& ]* b* [+ D' o
T% { [, E5 X) l0 V0 @. Q& p b6 j K7 u
|
zan
|