QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3984|回复: 0
打印 上一主题 下一主题

嵌入式Linux网络编程·笔记1·Linux C 文件编程

[复制链接]
字体大小: 正常 放大

1178

主题

15

听众

1万

积分

  • TA的每日心情
    开心
    2023-7-31 10:17
  • 签到天数: 198 天

    [LV.7]常住居民III

    自我介绍
    数学中国浅夏
    跳转到指定楼层
    1#
    发表于 2021-11-24 18:50 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
                                嵌入式Linux网络编程·笔记1·Linux C 文件编程  U2 S8 p! E# p* l8 z3 F
    Linux C 文件编程 – Linux I/O编程; f8 w1 s6 U6 X
    ) {; t* ~, A) {/ T& [! L
    1.为什么称为I/O编程?     Linux一点哲学:一切皆为文件。& o7 ^6 p  f0 T: o% s
    * v6 q' T: X* m0 w# Y2 Z& t
    2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
    8 O' ^. o- r5 l4 D5 o4 C) k: T1 n" R% `' a: H3 S0 k/ _( _
    3.Linux为什么会选择把所有资源抽象成文件?( X. R0 c& P  u
    ) T" m6 n1 A2 p* U4 q6 {6 b* {
        1)文件本质就是字符流 – 二进制;7 G$ ~" m8 A. a0 h4 d
    . K; H$ N; e- ^* J7 f0 x) [4 P$ h) ^
        2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);/ z: f/ g/ y! J- R5 ~5 O

    6 X  F& b0 k, d0 d: G# Q2 a; [    3)文件系统已较为成熟。
    0 `+ y- s( W; R/ M  ^" d! q6 {9 x7 e
    4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)
    + U# V- }* V4 ^( N
    ! Y2 g' R4 u) ?. m- O7 T    C语言:fopen、fread、fwrite、fclose、fseek;; A8 {* L2 @0 V3 ]

    , F1 Q: V# @9 `    Linux:open、read、write、close、seek。
    6 l; f' g8 i- x- i* E. T$ Z8 m  ?- Y8 @: v  c
    5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。
    % p" A' C, o# C9 w
    , \4 o5 w$ {; g# E% X0 N8 L  c6.在Linux下如何操作一个文件?3 q4 @: @. I; o8 i9 P
    $ q& _, [+ @' z5 k- e; ]" }* a
        1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;
    ( w+ o: N+ C# f  W+ M8 ^
    * |) n4 S* H; q. C! |% s( Q    2)文件id:无符号的整型 – unsigned int fd;+ g" e  Y* |, E0 p; @. Q8 P* f
    ! c9 G, t/ o& e& B: w  |$ C, v
        3)文件id的限制:unsigned int – 有取值范围;
    5 N. K2 ^# z+ N1 w8 J' t2 K0 q  {( j% R" }5 a1 R* {& p
        4)用户自己创建的文件从“3”编号开始。
    7 J5 {, @1 C7 d( I
    # g6 F0 @+ H" L7 F4 t$ Z( `* a (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
    9 S' v% X( W' a$ @6 }' {# b1 J1 o! G; h1 U, y* K* v
    7.什么时候文件会有自己的id?
    . [- n6 P! |, q6 q8 x
    2 J3 |. \- G" R) d' [, [4 {   动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
    7 I# h  L2 L& W
    3 E+ W6 R) {, m总结:+ x, _# z& @. w$ P$ p" [7 C# w
    嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
    3 k7 a" B2 F" L& x6 ]嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发& \+ v& k- S! B: d# Z
    Linux操作系统的组成:用户空间、内核空间: v" n; C$ G/ \
    为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
    8 t* f% N8 |$ P$ i3 V) ?用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)
    + F$ G, Z, \2 G5 i$ O# w什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务& h0 O5 Y& J  D
    用户如何发生系统调用?调用系统提供的API
    / I' P) Q& K5 U' i* QAPI:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
    ) Y5 a6 @1 N) G7 ?7 f' A! e+ m+ H  @如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)8 p  r+ n  F# G. w4 |7 @& i
    学习方法:头文件、函数名、函数内每个形参作用、函数返回值
    % `5 I9 @% @9 i2 b1 \1 C: n6 I8 K+ R' K0 k
    - @" ?+ X$ |8 ?5 i) N

    # v3 _/ N  H) j4 e: g4 Z8 X5 r. }1 g- P& y# `
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-24 21:55 , Processed in 0.455515 second(s), 51 queries .

    回顶部