QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4061|回复: 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 文件编程
    + k( Y! W+ e- f- J' v4 y* T8 y, }Linux C 文件编程 – Linux I/O编程3 N- f# F6 J) C0 T2 t

    2 H1 Q4 D  M# ^/ q1.为什么称为I/O编程?     Linux一点哲学:一切皆为文件。8 [. q# }6 }: M% r& o

    + a+ s: ]. V: p2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。  L' ^3 \/ `2 O3 k* W
    5 D- W3 T" P  d
    3.Linux为什么会选择把所有资源抽象成文件?
    8 l" t4 c- l: G8 b8 F% e
    3 f5 {7 M+ u1 j$ v, r2 }% P6 ~    1)文件本质就是字符流 – 二进制;% `5 z: s9 N! n4 P; |/ d2 {

    + w2 M: {9 O) Q4 v5 w    2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);1 M* u- I9 N% o4 c8 J" {( [
    * k# Z( r6 j8 j( U$ X2 m
        3)文件系统已较为成熟。
    ; s- b9 f/ {$ n4 z: w' a( x% d' o% a6 o7 D( h: h
    4. C语言VS Linux文件操作(二者区别 – 是否有操作系统), N: Q8 }9 M* g6 N5 G" c( ]& ]

    # Z: O+ w; i3 U* i* h    C语言:fopen、fread、fwrite、fclose、fseek;  G: H# O$ }# \
    " u2 x8 Y* b9 b: J
        Linux:open、read、write、close、seek。* n! A1 ~7 q4 T5 Y

    2 ]' E8 e; q! n3 m) _5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。1 c7 x9 S1 ~6 P7 A( r2 o, V

    ) `6 ]' _' \' k$ S* y) J, W& u6.在Linux下如何操作一个文件?5 T' K# g4 N5 w( Z6 l4 @* z
    2 A/ Y) `( S4 A# T" v! t
        1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;
    1 s- q) S, J2 X/ M: O! V- ]
    # @8 p) e$ d7 m% I2 N$ ~3 I    2)文件id:无符号的整型 – unsigned int fd;  B3 Y4 P$ W0 l

    7 c8 m2 D: o5 ?' Z    3)文件id的限制:unsigned int – 有取值范围;
    + Q- j+ @+ c3 r; Q1 `" z/ j4 E
    ; m' l5 E; _2 ?) a/ }    4)用户自己创建的文件从“3”编号开始。
    ( \1 G) }7 b5 i9 W3 s+ E7 h2 ~1 @, ^* L. ]8 J' H
    (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。7 Q1 a, }9 k+ k) \1 u
    # m$ g! I7 f  r- d# u$ F2 p
    7.什么时候文件会有自己的id?+ @& z+ Z. V" s" J6 p6 ?9 M3 l
    * C9 k+ d1 S4 C; |" L' g
       动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
    # A" b5 S" @2 E: X, u. O( j; x$ d. |, E/ a; x& r
    总结:
    . x9 o4 C! s. A9 N0 W  Q嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程9 S% m- y) S8 i' E/ r+ r
    嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发$ L! E/ e+ G5 n3 }' Q: U+ b0 x2 _
    Linux操作系统的组成:用户空间、内核空间- O; E- J3 ?  _7 ^
    为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问9 E* A5 }: _$ c
    用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)
    6 h7 g( P- b& I5 X+ R什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务; `4 p5 Q) j, b/ S1 o
    用户如何发生系统调用?调用系统提供的API
    6 C) p$ d* n1 X5 n5 D" XAPI:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
    / F! n0 T- U6 Z$ q  m6 u如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)
    3 |, ~. }8 T$ K  I$ Q学习方法:头文件、函数名、函数内每个形参作用、函数返回值' z3 \! h9 o  o# {, }7 I5 k. B
    ; h" i0 f5 ~1 @8 x- L; q3 H0 b
    8 u, r% K8 B+ ]+ e6 G  E& i
    6 {. a6 W, l$ ~
    8 P& b5 ]6 I- v$ Q, C# _% J; \, T+ \
    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-9-10 22:24 , Processed in 0.777647 second(s), 50 queries .

    回顶部