Linux应用编程(文件IO----系统调用)

 1.概念 

文件io:
    操作系统为了方便用户使用系统功能而对外提供的一组系统函数。
    称之为 系统调用  
    
    其中有个  文件IO
    一般都是对设备文件操作,当然也可以对普通文件进行操作。
    一个基于Linux内核的没有缓存的IO机制
    文件描述符 --- 系统调用这组函数中,对打开文件的 标识 
    整型数值 
    0~1023 //1024个 
    
    0 -- stdin 
    1 -- stdout 
    2 -- stderr 
    
  2.基本操作 
    a.打开 --- open  
    b.读写 --- read / write 
    c.关闭 --- close 

文件IO操作特性

特性:
        1 没有缓存区 (//可以认为数据直接交给了内核 )
        2 操作对象不在是流(FILE *),而是文件描述符(整数)
        3文件描述符
          很小的非负的整数    int   0-1023
          内核每打开一个文件就会获得一个文件    描述符

每个程序在启动的时候操作系统默认为其打开
          三个描述符与流对象匹配:
          0 ==>STDIN_FILENO === stdin
          1 ==>STDOUT_FILENO == stdout
          2 ==>STDERR_FILENO == stderr

库函数 本质上是 对系统调用 的封装 

库函数:
     优点:
         a.方便,功能多 
         b.可移植性好 
           标准 
     不足:
         c.可能存在 安全性 隐患
系统调用:
     优点:
         a.使用起来,简单 ,功能简单
         b.安全性高 
         c.设备文件 ---- 文件IO      ///dev/video0 ----> fopen();     
     缺点:
         c.很多复杂功能需要自己封装设计
         d.可移植性差 

标准IO库:      系统调用 
fopen           open
   r               O_RDONLY
   w             O_WRONLY|O_CREAT|O_TRUNC 
   r+            O_RDWR  
   w+           O_RDWR  |O_CREAT|O_TRUNC       
   a             O_WRONLY|O_CREAT|O_APPEND 
   a+           O_RDWR  |O_CREAT|O_APPEND 

 open("hello.c",O_RDONLY);  //fopen("hello.c","r");

上图0666是给打开的文件加权限

打开一个文件代码如下图

实现cat函数

练习:
      用文件IO方式实现文件拷贝    

写一个空洞文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值