- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40218 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 12776
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1419
- 主题
- 1178
- 精华
- 0
- 分享
- 0
- 好友
- 15
TA的每日心情 | 开心 2023-7-31 10:17 |
|---|
签到天数: 198 天 [LV.7]常住居民III
- 自我介绍
- 数学中国浅夏
 |
嵌入式Linux网络编程·笔记1·Linux C 文件编程
0 i0 B! i9 G/ ALinux C 文件编程 – Linux I/O编程
3 l& `- {) K( M- `8 T7 P- ]) U- A
3 e/ E# W6 W. T. J' @7 E3 r1.为什么称为I/O编程? Linux一点哲学:一切皆为文件。
2 W: B. |. J* t* M& o$ q8 ]% l! _% @% Y/ _
2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。: y n6 A& ?* P2 X _# a6 z0 q
, W* C/ I# R" ?3.Linux为什么会选择把所有资源抽象成文件?
( @2 m) P2 f6 s7 C, }+ P
# \9 S# {# q0 M 1)文件本质就是字符流 – 二进制;
" K0 @6 Y( F* D2 @7 ^+ _$ x5 B8 l# W1 J" R8 v8 E; N/ K
2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);
+ k/ O8 w7 P% R! t9 U1 v/ m* {0 F1 X6 N; B2 K" C
3)文件系统已较为成熟。
, @8 P: B; D; }! A9 e. v& I
Z$ K4 ^; @# Q7 v, c+ c8 \) |4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)
8 P$ D$ X' @7 ], ~
# D, [- Y+ d1 Q; I7 y& ? C语言:fopen、fread、fwrite、fclose、fseek;3 L5 y H* R+ a* c1 A
; d% [1 r4 i2 X- B8 J: r j Linux:open、read、write、close、seek。
. ~1 @6 i8 ]4 A( ?, h/ m! I) G8 V9 x; j( H
5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。
. y! e: V6 _* y3 ~
: f4 H% H) i. \9 h c6.在Linux下如何操作一个文件?' x/ ]6 `. f3 g# p7 D$ R
! k. O( g& H7 i& \ 1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;2 K8 e+ m# f! Q L8 ?, v- x2 |! Z
. r l3 D) [% q& J$ d: \) H 2)文件id:无符号的整型 – unsigned int fd;- j2 d4 B( v$ O7 t4 T; ~9 e; ~
( [1 x/ c3 w/ G5 i
3)文件id的限制:unsigned int – 有取值范围;
( p" N( p/ R6 ]+ {; m2 {
9 I8 \1 _( o" _; M7 W 4)用户自己创建的文件从“3”编号开始。; d2 _; D7 N6 X% a/ A1 I5 ?
1 S& d8 X& m: O+ a( E) c( _ (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。( q0 q; ~. X: ~- \: n
; x x8 Q2 ?4 c% ?/ d" N8 c' Q
7.什么时候文件会有自己的id?' k* \; B! k: I6 x
7 X6 R' n* p7 p( ^+ T 动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
% n Q- f A. Q h/ E( h# g
7 `) C3 {. W& s) m3 I7 i总结:
! i; j i" o q* m; w& K嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
. \( M7 F& N; W) I# G6 l8 f嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发; B) M; `! y) {$ o% A. Q \, |
Linux操作系统的组成:用户空间、内核空间
& w) t+ ?1 _7 l$ k( w为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问% K% }! u S! \- n
用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)) K' c2 L# M/ z% T- h9 |1 B* Y% V y
什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务
0 X5 |. o5 d1 K h& D4 |用户如何发生系统调用?调用系统提供的API. E# p# P: d& Z
API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)1 o T/ b n- d6 p1 M3 E# V( Y. W
如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)
7 R9 u! ?4 t. o& e学习方法:头文件、函数名、函数内每个形参作用、函数返回值& j- g, x; z! {+ V- _
- E# e/ P5 M* L
& I( N( U2 O1 Q* |
* o8 v3 C/ c: U& w9 |; L! f1 d
. |' E* I. R* v0 t w, b: d |
zan
|