QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4067|回复: 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 文件编程
    ' J1 d3 M& ^' _; p% k- i' k( \Linux C 文件编程 – Linux I/O编程
    7 a! r: ]: j5 O- C' W/ o
    ( b0 V4 V3 \: `8 T1.为什么称为I/O编程?     Linux一点哲学:一切皆为文件。+ L, u" Y( E1 c2 t; t# g

    0 \1 n6 w$ F& q: s# U- y2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。1 C. c! F/ T! I

    , Y1 _( `  R% d3.Linux为什么会选择把所有资源抽象成文件?
    ; ^) ~8 {2 K; Y9 j% f; X. Z$ K
    / u3 B' [  B. K" q, i" ?5 b    1)文件本质就是字符流 – 二进制;) Y; L- V' }+ e
    , [( B$ \8 ~& x% v5 H
        2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);
    2 b% I3 b: U, {8 p: P: L
      i8 M! n$ ?. y2 z9 P( H    3)文件系统已较为成熟。
    ) Z; u; E' t" b" d# E
    8 E3 v- C0 _) D% Q! W: j4. C语言VS Linux文件操作(二者区别 – 是否有操作系统). j3 \7 n  D" r; e5 G. u

    0 {! Y/ a! W0 Y3 j% S& e1 v    C语言:fopen、fread、fwrite、fclose、fseek;
    5 n! Y6 d7 F: g3 O- c# a
    6 ~% {% }: Z, w: t" l) s; k) y0 }    Linux:open、read、write、close、seek。6 _5 ]# u! U. g5 Q: D0 l
    ; Y+ a& |  ]6 r4 w5 g) D2 a) Y
    5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。3 q( `4 I- W, q
    3 o" N9 K# Y6 [. ]+ i; ^$ {7 E6 N
    6.在Linux下如何操作一个文件?2 y$ G( e2 j; a  t: `% D) o
    . a$ i7 f7 o# o" e( F+ `7 a
        1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;5 j0 ~5 i- ]& H& s9 l+ r7 T* w
      U4 ?3 B4 |% i8 t9 }9 h
        2)文件id:无符号的整型 – unsigned int fd;
    & E0 a! C& d4 ]0 ^# v7 J0 G7 Q$ O
    . f  J- U1 X% {" Y( Z6 @7 v) A8 q    3)文件id的限制:unsigned int – 有取值范围;
    5 x/ M" G3 J1 A+ p0 z
    + Y  K  l6 \  Z0 k6 ~    4)用户自己创建的文件从“3”编号开始。
    0 S6 E, M0 o% B& c) ]7 v
    $ \$ e6 k7 j/ B* r8 r (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
    0 k; x6 E9 K4 E( H
    8 i/ B0 `2 R$ e3 }5 B7.什么时候文件会有自己的id?6 S2 }! X) E8 C2 i

    . ^8 m5 V! ^/ \' A   动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
    % m6 F, g5 n. ]! s/ m" Y6 P/ F/ W
    2 u: k7 f0 e! O$ u) L+ C( h3 W总结:
    ) l' G- M+ v) e& {6 w5 H( H# N嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程# A/ K& s: B7 M' B2 j+ w
    嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发
    / L% R5 N( |8 j- xLinux操作系统的组成:用户空间、内核空间( a  E4 c& r/ T
    为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
    $ @9 r- {8 R1 \% ~! W* d( I用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)% t9 k$ I, U8 q$ `
    什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务! ]: t$ K. L, C; K0 E$ I) ]
    用户如何发生系统调用?调用系统提供的API
    - V% B+ ~* J( p! z7 A' v' I3 `API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)- c* R; }# Z( U2 W
    如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)
    ' M$ S$ J3 Y/ G7 }6 U学习方法:头文件、函数名、函数内每个形参作用、函数返回值+ C$ S0 p6 P- k/ T" o- L
    - |* w% s3 F. `, ]9 X0 ~1 m  @8 J

    & ]* b* [+ D' o
      T% {  [, E5 X) l0 V0 @. Q& p  b6 j  K7 u
    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-11 02:24 , Processed in 0.281151 second(s), 51 queries .

    回顶部