QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3979|回复: 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 文件编程1 f2 K% V- [3 Q, A. y( p4 u
    Linux C 文件编程 – Linux I/O编程3 r: M6 O& R; C$ p

      l# ]: ~4 G( Y$ I1.为什么称为I/O编程?     Linux一点哲学:一切皆为文件。
    / Y& Y3 L, w5 D& O, W8 F. Y) M! l' W
    1 @  x6 O# W3 d) U: t; r" [  v2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
    ( j7 w6 F1 {4 m( ]$ ]
    ( k2 y  u' Z5 }, {3 F2 K3 m9 Y7 i3.Linux为什么会选择把所有资源抽象成文件?
    7 r0 G. Y9 ^' R" z+ @7 S0 B( w; ]. ~  f" ^% \0 d2 c8 K# Y
        1)文件本质就是字符流 – 二进制;
    * W! q, @# g7 B9 Q# |0 z% l+ w2 f, M
        2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);. d0 p) i' P. ?& h

    . ?2 b: d0 S/ ^0 t5 M    3)文件系统已较为成熟。
    9 ~& T- J, r# l1 ?% E" d5 _/ T- i, P* `( N1 O
    4. C语言VS Linux文件操作(二者区别 – 是否有操作系统). V6 g4 U" ~$ j8 O
    % a3 m- c7 |6 ^# y9 |* Z
        C语言:fopen、fread、fwrite、fclose、fseek;
    ; ^. O. x! ^9 R: F& m+ U  N0 j0 u! X* w3 L" n! z
        Linux:open、read、write、close、seek。
    5 Y8 k( E# s- _# b/ z
    " B$ F3 p/ g7 b! h2 g1 n$ W5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。9 S: {. P4 v2 I3 j' M; R

    , q7 j7 g% D" f' S  ?9 `6.在Linux下如何操作一个文件?0 p, f9 J' ~  t, P2 w) [
    1 I5 T6 {" Z9 [, I; e7 v+ s% f8 S
        1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;$ v/ r: t7 E* K5 R3 A# w7 g4 M
    ! \- B3 d8 ]. _
        2)文件id:无符号的整型 – unsigned int fd;
    2 q0 a( @2 U/ }6 n% z3 e' [/ N. A. w2 P4 Z1 }) [' A
        3)文件id的限制:unsigned int – 有取值范围;
    $ ~+ m$ l7 ^, a" O- c% S8 R& d- q8 o, A1 s8 g7 c. Y0 w9 D
        4)用户自己创建的文件从“3”编号开始。
    1 Y. q+ l0 n$ t2 b: _0 B" s9 V& y) o" {
    * F( f) @$ G4 y (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。( k. G" F  p1 l

    7 e+ S) h; H/ i. k& J2 L0 {7.什么时候文件会有自己的id?: k6 q0 {! R- P2 I, m* c

    ( S* n" {0 I1 y; b   动态分配,当操作一个文件时,操作系统才会给你这个文件的id。 . l+ m, _( F" _0 Q& q

    0 X5 ]' _9 E. y8 E8 u6 ^3 ~总结:6 U0 e( |; \* v# F5 ^
    嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
    7 d6 v2 R; m7 q, F! {& s嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发
    * @6 W; O/ Q0 J" tLinux操作系统的组成:用户空间、内核空间, s& l+ R2 v/ ^9 g( p
    为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
    1 b8 S: m! }; w. h/ g$ c用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)' l0 |  _' N: }8 R* U  I6 R
    什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务  I3 \( w' n: D7 ?4 O9 Y& _
    用户如何发生系统调用?调用系统提供的API% J; `1 y9 O% Z
    API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
    + M* w5 O$ e. s! r如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)6 s2 q+ Y+ E+ c' k
    学习方法:头文件、函数名、函数内每个形参作用、函数返回值
    ; g4 C  L- m0 F8 c  A7 N- ^& H, f5 X6 h7 A; M; D2 i( b* y
    : J' k) r1 T+ A
    $ \7 r9 h! Y$ b' N* l

    * H9 ~6 b! [9 n" u* _% Z. 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 19:30 , Processed in 0.334420 second(s), 52 queries .

    回顶部