文件IO

UNIX系统中大多数文件IO函数----------打开文件,读文件,写文件。

只需要用到基本5个函数:open,read,write,lseek以及close.主要是不同缓冲区长度对read和write函数的影响

上面说明的函数经常被称为不带缓冲IO,不带缓冲指的是每个read和write都调用内核中的一个系统调用

文件描述符0,与标准输入关联,1与标准输出关联。2与标准出错输出

打开或创建一个文件
#include <fcntl.h>

int open(const char *pathname,int flag,../* mode_t mode */);
调用create函数创建一个新文件
#include <fcntl.h>
int create(const char *pathname,mode_t mode);

等效于上面
open(pathname,O_WRONLY| O_CREAT | O_TRUNC,mode);
lseek
调用lseek显示地为一个文件设置其偏移量

#include <unistd.h>

off_t lseek(int fiedes,off_t offset,int whence);
调用read函数从打开文件中读取数据
#include <unistd.h>

ssize_t read(int fileds,void *buf,size_t nbytes);
write函数,向打开的文件写数据

#include <unistd.h>

ssize_t write(int filedes,const void *buf,size_t nbytes);
原子性的读和写

#include <unistd.h>

sszie_t pread(int f,void *buf,size_t nbytes,off_t offset);

sszie_t pwrite(int f,const void *buf,size_t nbytes,off_t offset);
dup 和 dup2

#include <unistd.h>

int dup(int f);
int dup(int f1,int f2);

dup返回当前f的同一描述符指向的文件表项,新文件描述符一定是当前可用文件描述符中最小的数值。

dup2 是一个原子操作。作用类似dup
为了保证传统的缓冲IO,快速的读写入到文件

#include<unistd.h>

int fsync(int f);  //这个函数只对文件描述符指定的单一文件起作用,等待写磁盘操作结束再返回。可用于数据库等。

int fdatasync(int f);  //类似fsync,但是只影响数据部分,而除数据外,fsync还会同步更新文件的属性。

void  sync(void);   //这个函数只是将所有修改过的块缓冲区加入写队列,然后返回,它不等待实际写磁盘操作结束。
fcntl函数可以改变已打开的文件的性质。

#include <fcntl.h>

int fcntl(int f,int cmd,.../*int arg*/);

这个函数有5个功能
1.复制现有的描述符
2.获得/设置文件描述符标记
3.获得/设置文件状态标志
4.获得/设置异步IO所有权
5.获得/设置记录锁

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值