QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3887|回复: 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 文件编程
    0 _, g8 o% B' R- r7 N# c  b4 p4 CLinux C 文件编程 – Linux I/O编程: M  d# |5 @6 R5 k8 H

    , j' J  E3 p* |9 _; @1.为什么称为I/O编程?     Linux一点哲学:一切皆为文件。+ m! v: b2 A2 U! Q( H
    5 g( H2 _# i) W0 K
    2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。( ]6 {0 W) b  o8 Y. ?) N

    . [8 U1 H5 u- S- `$ d2 r5 {3.Linux为什么会选择把所有资源抽象成文件?
    & d5 P& H7 L" \) S: A  V9 E' F, `
    ' ~) c4 `. p' ^& V9 K$ x    1)文件本质就是字符流 – 二进制;3 ?$ T; m7 ^% _9 H9 k$ \
    3 t+ S" O; U+ }
        2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);2 ^+ J) {: e" V" t' w

    6 K  m$ T/ [- F% Z    3)文件系统已较为成熟。$ s- a; a2 y8 N- s
    * b) U1 M* G$ R; f( g5 B- x! L- B6 ^% k
    4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)- j* t5 D7 I6 U. Q) Y1 f
    / z; {" [; t# D" v' H
        C语言:fopen、fread、fwrite、fclose、fseek;
    3 R6 x& R' _$ k7 f! ]. e" Z6 Z
    $ H. H6 |0 c, @, S, U& i    Linux:open、read、write、close、seek。
    : N, [* D1 v( Q" C% L5 R! R$ B/ i* o: `( h4 f$ l2 y
    5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。$ L9 m7 [9 S4 W

    ) h6 f9 O, m( y6.在Linux下如何操作一个文件?
    " }3 Q) v7 e+ b. t7 b" n8 B) o' g: l' S# h1 z9 z3 {; d
        1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;& w& I* j9 n: a0 L' \& ~" x
    7 l+ o+ ~0 K* G' ^: W* j! |1 X
        2)文件id:无符号的整型 – unsigned int fd;6 R+ w- o; F* E; U/ i

    6 y4 ~* T7 F* n" @3 |$ a    3)文件id的限制:unsigned int – 有取值范围;
      G  q  y. t6 S( m% t( u( f1 \& q& `0 l+ b/ i/ H7 }# N
        4)用户自己创建的文件从“3”编号开始。
    5 X% }8 z  D2 P% n9 l& f3 Y  A' |% T! ]; a6 o; i- N- p
    (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
    ! T9 i4 u8 X' z( E  k  u8 x( G0 Z- i9 V3 J* f. c
    7.什么时候文件会有自己的id?
    2 P9 X5 a; R& b$ I9 I
    3 n2 `1 X6 I4 m+ M4 S) T3 n: v: k; {   动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
    2 I& S% t% F, o0 _/ P# j2 E6 I" O+ ^+ e. [- l, Y4 H
    总结:
    1 O2 N5 \7 B  G嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
    % e$ }+ ?$ J! W+ x- y0 j" K嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发
    + X& N! k$ P& ?' Z: C+ A; c6 cLinux操作系统的组成:用户空间、内核空间
    6 E1 L! ^7 T) I1 H为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
    + ], B- b1 L. r. ~. I8 F用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)' q! |3 V' _! U. ?" p0 ^  k
    什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务% ]7 ^/ r0 r( w4 n7 \) V# ]
    用户如何发生系统调用?调用系统提供的API2 D/ b1 s$ A, z
    API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)$ t* r- w0 N5 `, m
    如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)
    ( V; q5 m9 C4 ]" c/ O' m学习方法:头文件、函数名、函数内每个形参作用、函数返回值1 j; W/ d; Y. }+ d

    . w. C. p8 y* [3 B. P$ p+ g$ y! m6 r  S

    # `1 \% r( d! ~7 c$ k! _/ B) J5 J8 d* P( ^2 a
    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-6-8 17:15 , Processed in 0.414993 second(s), 50 queries .

    回顶部