第三章 文件I/O (一)

第三章 文件IO

 

一,概念介绍

 

文件I/O:就是指不带缓存的I/O,每个readwrite都调用内核中的一个系统调用。从本章的各个函数中可以看出,我们在调用函数时没有指明缓存。与它对应的就是标准I/O了,到第5章才会介绍。

 

文件描述符:用文件I/O对文件进行操作时都要用到文件描述符,它是一个可用的最小非负整数。例如你打开文件后得到的文件描述符是4,那说明0123一定正在使用,而4MAX一定没有被使用。文件描述符的概念非常重要,多数底层操作都要用到文件描述服。

 

文件如何共享:图

 

原子操作:由多步组成的操作(函数集合),原子操作若执行则函数集全部执行,不可能是执行函数集的子集。原子,不可分割的。为防止出现错误,原子操作是由系统内核一步完成的,不被系统调度程序分割。

 

二,函数运用                      

 

1,open,creat,close

 

 

 

//-----------open.c----------------

 

#include <sys/types.h>

 

#include <sys/stat.h>

 

#include <fcntl.h>

 

#include "ourhdr.h"

 

#include "err_error.h"

 

 

 

main()

 

{

 

       int fd1,fd2,fd3;

 

 

 

       //以读写方式打开文件open.c

 

       if((fd1=open("open.c",O_RDWR))==-1)

 

              err_sys("open error");

 

 

 

       //open创建一个文件123.txt并可读写,访问权限是644(在ourhdr.h中定义为FILE_MODE)

 

       if((fd2=open("123.txt",O_RDWR | O_CREAT | O_TRUNC,0644))==-1)

 

              err_sys("open creat error");

 

 

 

       //creat创建一个文件456.txt并可读写,访问权限是700

 

       if((fd3=creat("456.txt",FILE_MODE))==-1)

 

              err_sys("creat error");

 

 

 

       close(fd1);

 

       close(fd2);

 

       close(fd3);

 

}

 

//-------------end------------------------

 

 

 

king@king-laptop:~/blog$ gcc -o open open.c

 

king@king-laptop:~/blog$ ls

 

err_error.h  open  open.c  ourhdr.h

 

king@king-laptop:~/blog$ ./open

 

king@king-laptop:~/blog$ ls                    多文件喽

 

123.txt  456.txt  err_error.h  open  open.c  ourhdr.h

 

king@king-laptop:~/blog$ ls -l

 

总用量 24

 

-rw-r--r-- 1 king king    0 2009-02-06 15:01 123.txt         它的权限可是644

 

-rw-r--r-- 1 king king    0 2009-02-06 15:01 456.txt

 

-rw-r--r-- 1 king king 1080 2009-02-06 14:59 err_error.h

 

-rwxr-xr-x 1 king king 8691 2009-02-06 15:00 open

 

-rw-r--r-- 1 king king  606 2009-02-06 15:00 open.c

 

-rw-r--r-- 1 king king 3811 2009-02-06 14:59 ourhdr.h

 

king@king-laptop:~/bolog$

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值