- 在线时间
- 514 小时
- 最后登录
- 2023-12-1
- 注册时间
- 2018-7-17
- 听众数
- 15
- 收听数
- 0
- 能力
- 0 分
- 体力
- 40216 点
- 威望
- 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 文件编程
1 l1 I+ B+ L2 f6 JLinux C 文件编程 – Linux I/O编程/ x4 E% B5 w& {" ]
! c ^& {/ X' g
1.为什么称为I/O编程? Linux一点哲学:一切皆为文件。% S- ^0 @/ |; x: P
2 s- F- r2 r$ ?+ o/ Q# K) ]2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
6 n# v3 B; ?: V7 ^6 N) k' ]) a4 y2 \- R, l* M. F( e
3.Linux为什么会选择把所有资源抽象成文件?5 a/ x7 T u+ P& I* h
7 k1 q% `* {, Q 1)文件本质就是字符流 – 二进制;/ e+ g- j; u" H$ l/ A
5 v, o0 w2 b5 G( b- P' C
2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);
0 G! c% N0 N0 p* z& [
4 h" S5 T8 M6 s U: S 3)文件系统已较为成熟。
. U' w2 N6 k7 \# z2 c. V/ S$ r8 D! j9 j, @- }( l0 n
4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)3 x- i1 b4 V5 Q, |
/ Y# S6 x' K9 r9 C# B8 R C语言:fopen、fread、fwrite、fclose、fseek;
0 ]8 c( ^- J- ]; v# B X4 C4 ~% q% w' v, L
Linux:open、read、write、close、seek。
" e& Z' l5 \" B. q+ V9 v/ e* G7 e& L! R, I" V% G
5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。* j" n0 j+ U5 p4 R3 F/ A
% j+ T2 w9 ?% w+ \4 {6.在Linux下如何操作一个文件?
3 b! r: u% G8 @# s! r' h$ ^ s6 @& F
1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;; t& \( u# I; k9 }( H, t% d& B
2 E4 X) R+ p2 d& Y! p9 V 2)文件id:无符号的整型 – unsigned int fd;
1 |4 o% B5 D' x# T( q; j
' H) _' v4 n$ o0 G3 v 3)文件id的限制:unsigned int – 有取值范围;6 i7 e3 @/ U" ]1 ~( T6 X
# H( C) z' C3 O2 e5 X7 r. j% k+ j5 @ 4)用户自己创建的文件从“3”编号开始。
3 t* c* m/ L+ O$ h6 v5 m# u7 o. H; [, K
(注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
8 H) n) Q. m% ]3 `. w- Z
4 z8 x4 i' i7 x; l" V% h/ k n7.什么时候文件会有自己的id?
; a9 Y) ^- J. z% ?2 K8 s( K" c* `0 O: }) M) g- Y5 }
动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
' {. d$ K5 N& N, |8 Q
+ I+ Y* E5 q! A( x0 }4 L) f! z( E总结:( n/ ]" [( P C+ f( y1 I+ b; T3 }$ K
嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程4 D3 q% s' ~3 c7 N' E" M
嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发( h# D* E/ _3 n% g- d
Linux操作系统的组成:用户空间、内核空间3 [! J8 ]! m0 l: \/ e6 t! h1 B
为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
: a5 X# g/ g! Z用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)
9 J. u& e0 \% p什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务1 y7 ^2 b& n* [
用户如何发生系统调用?调用系统提供的API
b$ P0 z3 D/ i- Y5 e2 J" B: NAPI:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)- F7 z" O0 {9 Z- t( H
如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)' W) D, Z w+ A# e$ k% Q) b1 r
学习方法:头文件、函数名、函数内每个形参作用、函数返回值
; K+ n; H3 p' b1 ^
" T( `7 X% j* j. a
) x7 ?# d5 d6 P/ J2 N0 ~7 j; D' q5 d% e ]- o$ E8 ~
! x/ d; {9 B/ ^% j& Q- H |
zan
|