linux 学习笔记之 FILE I/O

原创 2007年09月21日 06:56:00
 
void sync(void)
s y n c只是将所有修改过的块的缓存排入写队列,然后就返回,它并不等待实际I / O操作结束。系统精灵进程(通常称为u p d a t e )一般每隔3 0秒调用一次s y n c函数。这就保证了定期刷新内核的块缓存。注意该函数没有返回值,因为它总是被调用成功。
int fsync(int fd)  
f s y n c只引用单个文件(由文件描述符f i l e d e s指定),它等待I / O结束(与sync不同),然后返回。f s y n c可用于数据库这样的应用程序,它确保修改过的块立即写到磁盘上。比较一下f s y n cO _ S Y N C标志。当调用f s y n c时,它更新文件的内容,而对于O _ S Y N C,则每次对文件调用w r i t e函数时就更新文件的内容。
int accessconst char *path, int mode
检查调用进程是否可以对指定的文件执行某种操作,执行成功返回0否则为-1. mode可以是:R_OK(读文件)W_OK(写文件), X_OK(执行文件), F_OK(文件存在)
ssize_t pwrite(int fd,const void *buf,size_t count,off_t offset)
ssize_t pread(int fd,void *buf,size_t count,off_t offset)
writeread基本相同,不同是pwritepread都是原子操作(如果文件在打开时设置了O_APPEND标记,对write也是原子操作);第四个参数offset 是指相对于文件开始位置的偏移量,应该主意的是调用pwrite/preadfd所指向的文件的偏移量并未改变。
off_t lseek(int fd, off_t offset, int whence)
offset <0 时,文件指针将向着文件头的方向移动(这和offset>0刚好相反)。
如果offset大于文件的大小,将会产生空洞(hole)。
int dup2(int fd,int fd2)
新的文件描述符fd2拥有和fd一样的描述符属性,如append, read, write 等。dup2是一个原子操作。
int fcntl(int fd,int cmd, … /*arg*/)
       需要主意的是:1、当使用F_SETFL时,能改变的标记位只有:O_NONBLOCK, O_SYNC, O_DSYNC, O_RSYNC, O_FSYNC, O_ASYNC2、下面是个命令具有不同的返回值,F_DUPFD, F_GETFD, F_GETFL, F_GETOWN。其中第一个返回新的文件描述符(类似dup),后两个返回当前的标记(flag),最后一个返回正的进程IDpositive process ID)或者负的进程组IDnegative process group ID)。
关于目录的权限
执行权限允许用户搜索和访问目录(无法ls),读权限允许用户列出目录的内容(可以ls),写权限意味着可以在该目录中创建文件。
 
其它
当进程推出的时候将会自动关闭所有的文件描述符,运用这个技术,一些程序可以没有明确的关闭已打开的文件描述符。
 

相关文章推荐

apue file i/o 学习笔记

1.open functions     int open(const char *path, int oflag, ... /* mode_t mode */ );    oflag  argume...

《APUE》Chapter 3 File I/O(学习笔记加上自己的代码)

文件I/O 在Unix系统中,文件I/O大多数的使用五大函数来实现:open,read,write,lseek 和close. 术语unbuffered的意思是每个read或者write函数向内核请求...

Linux系统学习笔记:高级I/O

本篇总结一些高级的I/O操作,包括记录锁、I/O多路转接、存储映射I/O等。 Contents 记录锁I/O多路转接read和write函数的变种存储映射I/O 记录...

Linux学习笔记1——不带缓冲的文件I/O函数

1,OPEN_MAX 限制名OPEN_MAX代表每个进程最大打开的文件数。 注意,这个最大数是一个运行时限制。也就是说,对于一个系统而言,它可能并不是一个一成不变的值;换言之,我们也不能把OPEN_M...

linux网络编程学习笔记之六 -----I/O多路复用服务端

多进程和多线程的目的是在于最大限度地利用CPU资源,当mou

【学习笔记】Linux平台的文件I/O操作

转自http://www.cnblogs.com/hanxi/archive/2011/05/01/2033744.html以下函数为不带缓存的I/O(unbuffered I/O)函数对于内核而言,...

Linux&C语言文件学习笔记(四):文件I/O与系统API续

一、sync()和fsync()函数:1、sync作用简述:由于不同设备文件读写速度的差异(或者速度不匹配),而为解决过大速度差异带来的一系列问题,我们在不同速度的设备之间加入缓冲区(buffer),...

《Linux内核设计与实现》学习笔记——I/O调度算法

I/O调度子系统用于调度来自多个进程对块设备的I/O请求。电梯调度 首先,如果队列中已存在一个对相邻磁盘扇区操作的请求,那么新请求将和这个已经存在的请求合并为一个请求。 2.如果队列中存在一个驻留时...

Linux系统编程学习笔记(1)-文件的I/O操作

概述在Linux系统下,通常以一个非负整数来代指一个打开的文件,这些文件可以包括终端,socket,设备,普通文件等等。规定的三个标准的文件描述符为0,1,2下面分别介绍(在交互式shell中,这些文...

Linux内核设计与实现 学习笔记(4)块I/O层

主要内容: 块设备简介内核访问块设备的方法内核I/O调度程序   1. 块设备简介 I/O设备主要有2类: 字符设备:只能顺序读写设备中的内容,比如 串口设备,键盘块设备:能够随机读写设备中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux 学习笔记之 FILE I/O
举报原因:
原因补充:

(最多只允许输入30个字)