QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3822|回复: 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 l1 I+ B+ L2 f6 JLinux C 文件编程 – Linux I/O编程/ x4 E% B5 w& {" ]
    ! c  ^& {/ X' g
    1.为什么称为I/O编程?     Linux一点哲学:一切皆为文件。% S- ^0 @/ |; x: P

    2 s- F- r2 r$ ?+ o/ Q# K) ]2.硬件设备也被抽象为文件:对硬件的操作=对硬件I/O操作=对文件的操作。
    6 n# v3 B; ?: V7 ^6 N) k' ]) a4 y2 \- R, l* M. F( e
    3.Linux为什么会选择把所有资源抽象成文件?5 a/ x7 T  u+ P& I* h

    7 k1 q% `* {, Q    1)文件本质就是字符流 – 二进制;/ e+ g- j; u" H$ l/ A
    5 v, o0 w2 b5 G( b- P' C
        2)文件的操作比较简单:打开、读、写、关闭、设置文件的属性(w/r/a/+);
    0 G! c% N0 N0 p* z& [
    4 h" S5 T8 M6 s  U: S    3)文件系统已较为成熟。
    . U' w2 N6 k7 \# z2 c. V/ S$ r8 D! j9 j, @- }( l0 n
    4. C语言VS Linux文件操作(二者区别 – 是否有操作系统)3 x- i1 b4 V5 Q, |

    / Y# S6 x' K9 r9 C# B8 R    C语言:fopen、fread、fwrite、fclose、fseek;
    0 ]8 c( ^- J- ]; v# B  X4 C4 ~% q% w' v, L
        Linux:open、read、write、close、seek。
    " e& Z' l5 \" B. q+ V9 v/ e* G7 e& L! R, I" V% G
    5.Linux文件的类型:目录、普通、设备、链接、管道、堆栈、共享文件。* j" n0 j+ U5 p4 R3 F/ A

    % j+ T2 w9 ?% w+ \4 {6.在Linux下如何操作一个文件?
    3 b! r: u% G8 @# s! r' h$ ^  s6 @& F
        1) 文件描述符作用:已知文件的文件描述符,操作该文件描述符就相当于操作该文件;; t& \( u# I; k9 }( H, t% d& B

    2 E4 X) R+ p2 d& Y! p9 V    2)文件id:无符号的整型 – unsigned int fd;
    1 |4 o% B5 D' x# T( q; j
    ' H) _' v4 n$ o0 G3 v    3)文件id的限制:unsigned int – 有取值范围;6 i7 e3 @/ U" ]1 ~( T6 X

    # H( C) z' C3 O2 e5 X7 r. j% k+ j5 @    4)用户自己创建的文件从“3”编号开始。
    3 t* c* m/ L+ O$ h6 v5 m# u7 o. H; [, K
    (注)在Linux系统中,0、1、2这三个文件id有特殊作用, 0代表的是标准输入;1代表的是标准输出;2代表的是标准出错。
    8 H) n) Q. m% ]3 `. w- Z
    4 z8 x4 i' i7 x; l" V% h/ k  n7.什么时候文件会有自己的id?
    ; a9 Y) ^- J. z% ?2 K8 s( K" c* `0 O: }) M) g- Y5 }
       动态分配,当操作一个文件时,操作系统才会给你这个文件的id。
    ' {. d$ K5 N& N, |8 Q
    + I+ Y* E5 q! A( x0 }4 L) f! z( E总结:( n/ ]" [( P  C+ f( y1 I+ b; T3 }$ K
    嵌入式网络编程 == 嵌入式Linux C系统编程(文件、进程、进程间通信、多线程、网络、大并发网络服务器、数据库、shell编程4 D3 q% s' ~3 c7 N' E" M
    嵌入式C开发 VS 嵌入式Linux C:使用Linux操作系统提供的功能(文件等)(多任务、网络聊天室)嵌入式Linux应用软件开发( h# D* E/ _3 n% g- d
    Linux操作系统的组成:用户空间、内核空间3 [! J8 ]! m0 l: \/ e6 t! h1 B
    为什么将Linux操作系统划分为用户空间和内核空间:保护内核不被用户轻易访问
    : a5 X# g/ g! Z用户空间如何访问内核空间?系统调用、中断(硬件中断、软件中断)
    9 J. u& e0 \% p什么是系统调用?用户通过调用操作系统提供的函数(发生系统调用)来访问内核的数据或者获取服务1 y7 ^2 b& n* [
    用户如何发生系统调用?调用系统提供的API
      b$ P0 z3 D/ i- Y5 e2 J" B: NAPI:用户编程接口 == 操作系统提供的可调用函数 (create\open\read\write\close\lseek\fcnl\ioctl\mmap)- F7 z" O0 {9 Z- t( H
    如何学习嵌入式网络编程?写(代码)、测试(写demo测试API接口的功能)、项目(知识点整合)' W) D, Z  w+ A# e$ k% Q) b1 r
    学习方法:头文件、函数名、函数内每个形参作用、函数返回值
    ; K+ n; H3 p' b1 ^
    " T( `7 X% j* j. a
    ) x7 ?# d5 d6 P/ J2 N0 ~7 j; D' q5 d% e  ]- o$ E8 ~

    ! x/ d; {9 B/ ^% j& Q- H
    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-18 11:33 , Processed in 0.388397 second(s), 51 queries .

    回顶部