数学建模社区-数学中国
标题:
嵌入式Linux网络编程·笔记1·Linux C 文件编程
[打印本页]
作者:
1047521767
时间:
2021-11-24 18:50
标题:
嵌入式Linux网络编程·笔记1·Linux C 文件编程
嵌入式Linux网络编程·笔记1·Linux C 文件编程
' h. M6 e4 P8 I+ h* V. ~
Linux C 文件编程 – Linux I/O编程
& \2 F5 k! {2 b+ [
" d) n6 ~' E* ^$ ~2 y ]
1.为什么称为I/O编程? Linux一点哲学:一切皆为文件。
+ f3 J* t/ h+ J0 u5 @4 o
* V/ ~3 P/ I8 i' |
2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
; @: @; ~" ~& t, i+ ^. d5 e
8 B) w1 S; |! o, r
3.Linux为什么会选择把所有资源抽象成文件?
0 v. i# Y6 b; Z) t- K
. D: c7 A% n9 K3 S+ ^
1)文件本质就是字符流 – 二进制;
- |& Z6 T% r8 O6 h# v1 ^* B" j2 L
. [- X' l, G* F8 T
2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);
) b7 J# f0 s+ y4 @% N+ Q
0 M6 `! a- ~+ V/ y3 h2 `
3)文件系统已较为成熟。
* B z+ n ?& Z% y7 Q( @/ ~4 p
! e3 l1 `4 S; T" w1 s5 d& N; {
4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)
0 M' I; r# a# k2 W9 o
# p2 M, @3 E7 U, k! P5 X
C语言:fopen、fread、fwrite、fclose、fseek;
1 s( C0 R: E. C" ~, b0 S
8 h6 a) S1 z, y. `0 f$ p- d
Linux:open、read、write、close、seek。
4 {4 t; z/ M; X9 |% R
: e: b! A) H* |5 Y& b' Q
5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。
$ _% H6 e! J3 c6 |" ]
9 ~" I6 x$ R8 U' p W! H7 ~6 b
6.在Linux下如何操作一个文件?
+ o% R5 ]) J/ J! I+ d V
1 C0 c5 w- Q, K( H8 n
1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;
" g2 y8 P0 Z" j/ h9 F
! f/ l- c2 o' R5 s3 Z& F
2)文件id:无符号的整型 – unsigned int fd;
3 N9 A( B c" f( Z
5 M7 l Q* L2 X& x. Q
3)文件id的限制:unsigned int – 有取值范围;
7 b# s1 J& t+ L. X( u, t0 k/ k+ M; q
X. x0 @* P* P2 e' i( A+ D
4)用户自己创建的文件从“3”编号开始。
- V% |, X5 ~; F' x% v& o
0 o( N* R: F" b5 h1 j
(注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
( Q/ l/ b" I0 \7 q
' t) ]- J/ t, V4 Y: _$ P4 ^( O
7.什么时候文件会有自己的id?
/ w; B. ]0 x5 w
0 J7 x+ c7 F# i: H9 \3 b
动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
, k! b3 W& \# V- M& o
( g$ }( T% `" h; q
总结:
9 H" u! Y! R# ]. Z6 ^/ `
嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
0 U6 h4 w8 W" t" m0 g7 ?5 V, }
嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发
* x* J2 \! S" }, d9 C6 v7 y
Linux操作系统的组成:用户空间、内核空间
1 y0 c w) U! M
为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
* u" l# [& p0 O2 Y+ V
用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)
0 }% n, g. A4 _* p2 |
什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务
S+ V: m* g4 c w/ D
用户如何发生系统调用?调用系统提供的API
0 q0 |! x- T( L
API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
3 i7 C6 [: H, _! m! }6 n" k
如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)
- l+ i9 {7 k: C/ V e
学习方法:头文件、函数名、函数内每个形参作用、函数返回值
. V9 Y$ }5 p0 ]5 S) x
: c. B o1 M% S8 i) v
* _0 l4 ~( l# ^4 A. z' ~# v( W* R
! a* Z) P' z0 d
: G% x: n" T+ u- q1 D% K7 P0 C
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5