QQ登录

只需要一步,快速开始

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

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

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

1158

主题

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 h! `6 |7 S+ ^! z' V: p, l; l
    Linux C 文件编程 – Linux I/O编程% Q' X0 o$ N) _- C+ K6 z& l
    & j& {% X# Y  v( p/ w" b; f
    1.为什么称为I/O编程?     Linux一点哲学:一切皆为文件。8 ]; y! Z% w/ A+ i: t% b5 x# _
    7 d1 c' ~1 y. [7 N7 w0 R( w
    2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
    0 l, y* K; o( D- x
    / e0 D& v4 A. T9 n3.Linux为什么会选择把所有资源抽象成文件?4 v/ n4 W; ~3 ]& I6 v3 r6 u/ g: d
    7 i5 g  z/ }: c4 h( O6 K  [" a
        1)文件本质就是字符流 – 二进制;# j% W( Y6 D# {6 J. _
    : A; n& j& x) M# g  s. c2 E+ R
        2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);- Q5 K2 Y* x2 {- F; N0 n% _) z4 ]
      V, d! k: S' z: a
        3)文件系统已较为成熟。  @+ M) K% ^% @" V2 X8 b
    : y# G5 }- L& z; ]9 f2 l
    4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)& S/ o( a, t& ?- c6 ~/ r
    ) U8 b1 @) H% Y9 {: n
        C语言:fopen、fread、fwrite、fclose、fseek;- H$ l* U3 c! F8 X( y) H7 [# v

    ( P0 [0 P! u0 c/ E6 W9 q6 F    Linux:open、read、write、close、seek。% X- {6 p. v7 R- g7 r. u

    , x4 L8 ^4 ~0 @5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。
    # e5 G. r  x$ f# E* B8 [1 b2 ~6 f8 Z- `# Q/ G( B4 y
    6.在Linux下如何操作一个文件?. H4 Y9 R5 @! @( \9 z0 `( N, H

    . C# ]' a" v/ }7 `6 s8 [6 |) j0 s3 M/ [+ G    1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;0 u# d( m  ]/ V4 H* a3 I# m
    8 P" w# w7 `* y
        2)文件id:无符号的整型 – unsigned int fd;- g% a. B0 t; ]# i3 m0 C8 G
    8 o$ N; T5 [6 |% W) V2 h
        3)文件id的限制:unsigned int – 有取值范围;- ]& V* e2 B. \& i0 p

    : ?- f+ E8 j2 r0 E& d    4)用户自己创建的文件从“3”编号开始。
    : |: J; O2 }: M$ ~3 K. `7 K# R# H, V- @5 Y( G' N9 G* |2 O
    (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。* D9 _: X6 V  J. b
    : w* ]( W4 _7 e& q* h  y  e/ R
    7.什么时候文件会有自己的id?. }* s- W) ~$ d. }; C1 f, V. t

    & E: S  H1 b: G9 @6 O1 |* Q   动态分配,当操作一个文件时,操作系统才会给你这个文件的id。 / Z5 @1 N, r9 d
    ' Z( c8 r) _! `
    总结:+ b5 ?* [# c! o. k: G4 K4 e! T
    嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
    9 K+ n8 n" `, C, ?- a嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发: g- @4 B, [% a9 v. C8 ^
    Linux操作系统的组成:用户空间、内核空间
    # s* H% z, S% _% f为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问$ a5 w8 i2 B8 w1 @3 P
    用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)
    5 R& p* M/ e) J什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务
    ) g" ^% N. \* W2 e7 y7 d9 V用户如何发生系统调用?调用系统提供的API) p# ~$ N4 |, `; u$ |1 F1 n
    API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)( `  T5 u, z: {- Y% C, X# c/ @
    如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)
    1 m2 u/ ]& p* q" A3 E7 @1 f学习方法:头文件、函数名、函数内每个形参作用、函数返回值
    & @. G4 ]4 {* o- ^8 W$ Q! h
    5 y& D1 x6 @, o5 f+ R7 [; q) ]9 Q+ g' W% p: Q! y8 [4 z
    + ~! G  t1 k6 V4 ?0 n

    : X9 H9 z6 _1 v2 _5 c: F! f
    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, 2024-4-26 03:44 , Processed in 0.551659 second(s), 50 queries .

    回顶部