首页 > 其他 > 详细

文件I/O

时间:2021-05-12 00:26:52      阅读:28      评论:0      收藏:0      [点我收藏+]

头文件fcntl.h

O_RDONLY

O_WRONLY

O_RDWR

大多数为 0 1 2

O_EXEC :只执行打开

O_SEARCH: 只搜索打开(在目录打开时验证它的搜索权限)<未定义>

O_APPEND:写时追加

O_EXCL : 如果同时指定O_CREATE则出错。在创建文件时候是原子操作

O_NOFOLLOW:如果是一个链接则出错

O_NONBLOCK:如果是fifo或者特殊文件,则非阻塞

O_TRUNC:如果同一目录创建的文件名字超过NAME_MAX则截断


O_SYNC:每次write等待物理IO操作完成

O_DSYNC:每次write等待IO。如果write不影响read则不等待。

O_RSYNC:(linux中 同O_SYNC一样)

open 和 openat

open( path, flags...,mode )

openat( fd, path, flags...,mode)`

区别:如果path是绝对路径,fd无意义。反之,则是相对于fd的相对路径

lseek(int fd, off_t offset, int whence)

  • whence值

    SEEK_SET:文件开始处

    SEEK_CUR:文件当前处

    SEEK_END:文件末尾

    如果 fd 指向的是一个管道、fifo、网络套接字。返回-1。

    通过设置offset值可以扩充文件在磁盘的大小

read(int fd, void* buf,size_t bytes)

  • return

    成功返回字节数

    到达文件末尾则返回0

    :在文件只有30个字节,读取大于个字节的时候返回30,在下一次read的时候才返回0

  • 读取终端通常一次只能读一行

  • 读取网络设备的时候,因为网络的缓冲机制可能返回值小于所要求读取的字节数

  • 读取面向记录的设备读取的时候,一次最多返回一个记录

write(int fd, const void* buf, size_t nbytes)

  • return

    成功返回的字节数于nbytes相等则表示成功

    否则表示失败

    :出错原因 1、 磁盘已写满 2、超过了给定进程的文件长度限制

文件I/O

原文:https://www.cnblogs.com/blog-morui/p/14757543.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!