文件I/O系统调用

文件I/O 系统调用 ——这些不带缓存的函数都是内核提供的系统调用。它们不是ANSI C的组成部分,但是POSIX的组成部分。

  • open()打开文件
  • create()创建文件
  • close()关闭文件
  • read()读取文件
  • write()写入文件
  • Iseek()文件定位

 文件操作方式

 系统调用(内核提供)         C库(标准C函数)

  • 标准库函数:遵守ISO标准,基于流的I/O,对文件指针(FILE结构体)进行操作
  • 系统调用:兼容POSIX标准,基于文件描述符的I/O,对文件描述符进行操作

文件描述符

  •   对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,用open或creat返回的文件描述符标识该文件,将其作为参数传送给read或write。
  • 在POSIX应用程序中,整数0、1、2被替换成符号常数STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO。这些常数都定义在头文件<unistd.h>中。(定义了标准宏)
  • 文件描述符的范围是0--OPEN_MAX。早期的UNIX版本采用的上限值是19(允许每个进程打开20个文件)。现在很多系统则将其增加至63,Linux为1024。

 

文件描述符与文件指针

  • 标准文件指针

        stdin    0;

        stdout  1;

        stderr   2;

  • fdopen()通过fdopen函数可以将文件描述符转换为文件指针

        FILE *fdopen(int  fd,  const  char  *mode);mode=>对文件的操作  “r”只读  “w”只写   “rw”读写

        文件描述符=>文件指针(fd=>FILE*)

  •  fileno() 通过fileno函数可以将文件指针转换为文件描述符

        int fileno(FILE *stream);

        文件指针=>文件描述符(FILE*=>fd)

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值