数学建模社区-数学中国

标题: 嵌入式Linux网络编程·笔记1·Linux C 文件编程 [打印本页]

作者: 1047521767    时间: 2021-11-24 18:50
标题: 嵌入式Linux网络编程·笔记1·Linux C 文件编程
                            嵌入式Linux网络编程·笔记1·Linux C 文件编程
. \1 f3 k- a5 p( p) ]% Z6 ]" I3 g) LLinux C 文件编程 – Linux I/O编程
  k/ j& S7 h2 K% y6 t0 B7 J- Y7 P, k
1.为什么称为I/O编程?     Linux一点哲学:一切皆为文件。/ I! Z6 L- k% V: }4 _

+ b6 D$ y: d/ O' Z" D7 y7 M2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。/ H4 g% m7 [. ?) L) r8 i

- Z- i4 z+ ?" w! D0 H7 }3.Linux为什么会选择把所有资源抽象成文件?
) ?; s/ M8 Z% U- T: i- k" K& s3 U* s% y1 Z8 d, c* W
    1)文件本质就是字符流 – 二进制;
/ ~* x2 L: H* L. \# v5 o& w
0 b6 T# r0 M8 D* K. d! y! M    2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);: e* E. A# L. q, r) U/ \
2 w: Y5 F1 P! J' Q( p
    3)文件系统已较为成熟。; ^) j/ G9 `5 e" K$ I

- ^  w; s2 e& x) G# P  [# d4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)7 r; P% H4 S& G- v) G; w$ I
; o3 L- L8 Z# j6 m4 K
    C语言:fopen、fread、fwrite、fclose、fseek;
. i8 g; V, K$ @# Y5 ]; B6 A& R! z! E3 Z, z- _8 o, g; Y
    Linux:open、read、write、close、seek。
, ~, N" {" Y' T7 e( D$ q1 s4 i. {
5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。
' s# A0 B, M( X9 h4 @. F1 A% k$ q  W+ }( U# D  K/ j
6.在Linux下如何操作一个文件?
5 N! X) {. e) v1 C5 o$ P# R  a# L
    1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;$ j) x( N# \- a3 M
- U8 V; h* a2 N- @0 r1 Q+ K
    2)文件id:无符号的整型 – unsigned int fd;  q2 O1 D% }4 t2 t  h3 w
8 K+ |0 P: B2 w3 w) r2 q" {
    3)文件id的限制:unsigned int – 有取值范围;
: g" ^4 w* ~9 V7 V! q+ v7 M4 R6 b0 g4 c9 u& x+ c
    4)用户自己创建的文件从“3”编号开始。/ v! r+ [) c8 _

) B% N; R, b! w# `8 h2 ~ (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
- B  i4 n! M: l: J, }, K( ]: C$ k+ \$ R" M+ D" B( w6 b
7.什么时候文件会有自己的id?
4 m1 ~) Y" s2 I$ M/ B1 e4 W0 L" A' \
' E* S  a: k% N+ }4 a+ W   动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
( \: ~/ D5 _: K1 y1 _% f) J2 s2 J6 d0 [+ }, }. o
总结:
* q& h- R1 s/ {# ]" p$ j* C嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程% N# }. O+ `8 {" c' H% M6 h2 E( I
嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发
5 p% n  z2 l9 R( I, KLinux操作系统的组成:用户空间、内核空间
) d" B& O' \/ l- n) a( `* W# V为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问# T. n0 I; m% D8 v+ {3 _
用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)% `/ a& i! h0 o- _
什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务
' n4 Y5 b6 ?; t; ?% r7 I用户如何发生系统调用?调用系统提供的API
$ o0 e' j; w( y' CAPI:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
. n& L9 L' s/ ?: G如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)4 P  V$ a& ~: @+ Z: N5 G
学习方法:头文件、函数名、函数内每个形参作用、函数返回值
4 b5 F) `2 ]! d! v0 |' o3 X2 C2 f/ q0 g3 R" k# U  y

+ C/ X5 {+ b9 e
0 x* M, z  F- A, E- D3 M
6 D8 q( W2 @9 V




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5