更多的文件I/O系统调用

文件I/O系统调用

  除了open、close、write、read这四个基本的低级文件I/O以外,其它的低级文件I/O如下:

  • lseek
  • fstat
  • stat
  • lstat
  • dup

lseek系统调用

  lseek用于设置将要读写文件的位置。相当于有一个指针,当指针指向文件内容的某一个位置时,下一次读写操作就会在文件的该位置进行。对文件进行读写操作时,该文件指针会不断地自动变化,而lseek就是指定该指针的位置。
  >> lseek函数原型如下:

#include <unistd.h>
#include <sys/types.h>

off_t lseek(int fildes, off_t offset, int whence);

  >> 函数的返回值: 当调用成功时,lseek就会返回从文件头到文件读写指针所在位置的 字节 偏移值;若调用失败则返回-1。
  >> 函数的参数:

  • int fildes指的就是要进行读写操作的文件所对应的文件描述符
  • off_t offset参数是文件读写指针的偏移值,即用于指定文件操作的位置
  • int whence可以指定偏移值的用法

  >> 偏移值参数offset的用法:
  offset的用法由参数whence来决定:

whence的值说明
SEEK_SEToffset是一个绝对位置
SEEK_CURoffset是相对于当前位置的一个相对位置
SEEK_ENDoffset是相对于文件尾的一个相对位置

* 注:off_t类型定义于头文件<sys/types.h>中,是一个整数类型。

fstat系统调用

  fstat系统调用可以获取一个文件的状态信息,它会将该信息写入到一个叫 struct stat 的结构中。
  >> fstat的原型如下:

#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

int fstat(int fildes, struct stat *buf)

  >> 函数的返回值: 调用成功时返回0,若失败则返回-1。

  >> 函数的参数:

  • int fildes指的是一个文件所对应的文件描述符
  • struct stat *buf就是一个指向stat结构的指针,所指向的结构用于存放文件的信息

  >> 关于stat结构:

stat成员说明
st_mode文件权限和文件类型信息
st_ino与该文件关联的inode
st_dev保存文件的设备
st_uid文件属主的UID号
st_gid文件属主的GID号
st_atime文件上一次被访问的时间
st_ctime文件的权限、属主、组或内容上一次被改变的时间
st_mtime文件的内容上一次被修改的时间
st_nlink该文件上硬链接的个数

stat和lstat系统调用

  stat和lstat系统调用的作用与fstat一样,但它们传入的参数不是文件描述符,而是文件的路径。
  >> 函数接口如下:

#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

int stat(const char *path, struct stat *buf);
int lstat(const char *path, struct stat *buf);

这两个函数还有一个区别:当文件是一个符号链接时,lstat返回的是符号链接本身的信息;而stat函数返回的是该链接指向的文件的信息。

dup和dup2系统调用

  dup/dup2函数的作用都是复制文件描述符,通过它们可以让一个文件拥有多个文件描述符。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值