QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3834|回复: 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 文件编程
    . W) \: R! J7 o/ N. G' n: r) E5 ALinux C 文件编程 – Linux I/O编程' [, B4 N: I2 N0 \+ X* `9 s

    7 l5 d( o& I; w6 P  n0 w1.为什么称为I/O编程?     Linux一点哲学:一切皆为文件。
    - k2 C  v  s' n/ j* q5 o7 X$ j; B* G9 B. P3 C* l
    2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。* Y3 |" e3 E$ J& q5 z0 n0 R" b$ J
    + M8 g! M" @6 `3 B: H% \
    3.Linux为什么会选择把所有资源抽象成文件?4 L# H6 w' G1 u* D

    + ]( T9 }6 p/ R% {$ z; F    1)文件本质就是字符流 – 二进制;" N) C/ @6 S9 S2 Q

    % l8 \# N, E( Z) H. b$ y. S8 W    2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);
    4 T5 \. Y. \/ @+ j! N; t  h$ \
    ( v2 }! W4 p" x* e; m' b    3)文件系统已较为成熟。' V$ W! u0 V) A+ v7 \% l  W+ k8 c

    ' s7 R2 d0 c8 a$ _, c( O4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)1 C8 E2 h; u' e/ F7 D& S3 j
    ' f0 h0 b/ d; D
        C语言:fopen、fread、fwrite、fclose、fseek;
    . w/ a5 y3 f9 V. X/ I  P/ r5 E% B0 i
        Linux:open、read、write、close、seek。
    $ C2 f- t3 E$ t
    , n# O! t! J" b8 d" t2 M5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。
    ! n! x: ^7 B: q. W
    ) R. v# i/ w/ x0 N6.在Linux下如何操作一个文件?. s; q- W+ M% m! t) n

    ; O% Z9 O- S, d+ |/ @& f    1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;
    5 V* Z( a# q& |' b( b$ `
    . ]. A! B7 L: |( Z9 g: `1 E    2)文件id:无符号的整型 – unsigned int fd;) I3 Y3 y5 w. d9 x9 U1 n) T1 ^% \2 S

    ) U/ e4 P8 s* O    3)文件id的限制:unsigned int – 有取值范围;* ~) Y0 L8 U4 T3 T! M

    . s0 n) z# \) n/ X# ~7 d    4)用户自己创建的文件从“3”编号开始。5 m% F- I0 y* R. c: d4 r$ d4 B
    7 Y* H) P6 H4 D0 @8 i2 e
    (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。4 F6 ]6 m7 f% ^) @
    ' S* \: `4 J* Q/ n% z5 U
    7.什么时候文件会有自己的id?
    * p$ |1 Q$ @) G& e0 c, Q
    5 a2 {* w: {. `! d& \* h/ t: K   动态分配,当操作一个文件时,操作系统才会给你这个文件的id。 ( }& Y" h" P2 ~/ a  q
    - I( L, U. Y5 h3 D/ z
    总结:
    5 G1 [2 [/ Y& G- |  c9 Z0 \2 o嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程
    % T; x& O7 l: _5 W* c  N嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发" b* Z. o4 j3 w2 {) L1 ?
    Linux操作系统的组成:用户空间、内核空间- @$ a7 b; [* _' ?: f0 G9 D! s( b6 Q
    为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
    / T% u; p- C+ B$ i. M用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)9 {1 u' o3 u$ P
    什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务# Z, X+ @2 c* c* o8 J
    用户如何发生系统调用?调用系统提供的API* s& z  Z# \+ f% z8 A9 Y, W
    API:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)
    + g6 L! j( K3 T, R8 v如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合): E# _: n( Z+ \& Z
    学习方法:头文件、函数名、函数内每个形参作用、函数返回值
    , Q# z* `: x/ i& r# Z0 e4 A- {7 \1 b! {9 d0 l

    # V% f1 x+ [: f$ X' f& {* v  z! [  v7 ?8 h+ C9 ~3 `$ ]
    1 {. v1 e1 t* ~, b6 i
    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-4-21 11:12 , Processed in 0.440310 second(s), 51 queries .

    回顶部