数学建模社区-数学中国

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

作者: 1047521767    时间: 2021-11-24 18:50
标题: 嵌入式Linux网络编程·笔记1·Linux C 文件编程
                            嵌入式Linux网络编程·笔记1·Linux C 文件编程
  R9 i: p, I  H$ nLinux C 文件编程 – Linux I/O编程
# Z: H9 I/ W! o
7 Q: z, G; [# }' y. \, e+ `1.为什么称为I/O编程?     Linux一点哲学:一切皆为文件。5 {( A( B# ~2 P  }: m

/ [1 x' j/ e. p- M2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
/ _7 Z# @# p) B8 h% V' \9 G' C( c/ z" V5 P
3.Linux为什么会选择把所有资源抽象成文件?
# Q8 V% z! N. _% V; K7 O# J) r- `+ P/ P
    1)文件本质就是字符流 – 二进制;
" j7 S" n) l2 P. H0 F7 W9 R5 z* o7 \) a) e+ o$ g  F+ ~
    2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);
; ]( `% p3 ?( i6 G: o: Y5 v# ^; X$ v2 h: S- _# w
    3)文件系统已较为成熟。- C' o- [& L  g

3 W  q  o; N( z' {: n4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)
5 N* E" k' k3 J" K) J" h7 y! i( y9 `
    C语言:fopen、fread、fwrite、fclose、fseek;1 H8 s5 x& k2 N5 O! b
, @. x8 j% r) x/ h0 i4 @5 p
    Linux:open、read、write、close、seek。, S$ y0 q( V$ V2 C* E3 d' n
: ?8 |. m+ M2 W2 D* M
5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。
/ B, \9 {+ p; p& d5 r6 ^9 ?2 e8 n
2 E% [3 r  l' h5 ~6.在Linux下如何操作一个文件?6 V+ [. a* G8 L* B  f7 ?1 ^8 B

6 g7 J5 s% {* V, G% Y5 \1 @    1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;7 X% h7 P: n* J6 U! A
2 \) u/ C8 l. J% F8 m
    2)文件id:无符号的整型 – unsigned int fd;' A6 S: ?5 V5 X, O4 b, M! j
! ~3 \7 J) q: I4 `# y  {# k, I
    3)文件id的限制:unsigned int – 有取值范围;
1 j6 ^& \6 W) W0 a$ H( x0 O  C# @. Q7 S- e7 u& d6 d8 L
    4)用户自己创建的文件从“3”编号开始。/ w% H. K, R% B7 a4 ~
5 z4 h+ b" z1 R5 i
(注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
* f5 a# d+ d5 M/ M3 t8 t$ I" M3 k" F
7.什么时候文件会有自己的id?
1 P( [0 G3 y( H
$ U% ?$ o6 j7 W, f5 P; O   动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
0 E8 Q0 U. {* R& ^
! E( ^' S. M* {9 N3 i' o" C. A总结:
" c/ l  K6 m" V嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
( x8 x. c- g+ u) D. k1 \嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发+ p6 j! f: ]; ?' _6 S3 f5 z
Linux操作系统的组成:用户空间、内核空间+ r( w! N  ~* v- o" k) g; F0 x( C
为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
# E2 R/ B  a6 }1 Q+ p用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)
$ Q% B) n6 P4 D; t& I7 _7 _5 ~什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务
. `6 j: r) B" ?7 ~# x# c用户如何发生系统调用?调用系统提供的API8 ?5 H( N9 g- w" ^
API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
8 R/ s, i0 g7 i* s, z9 n5 c: G& K2 ~如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)
$ [+ |) F5 @" ~学习方法:头文件、函数名、函数内每个形参作用、函数返回值6 L) _+ P: [5 e( P7 h

6 `( o1 P+ I; o- O9 C
7 u2 e. C+ f8 q" v4 `. W+ N" D4 Y& ~9 ?3 t

0 x7 T, R9 h) o- i" X& Q, l




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