linux 学习笔记之 FILE I/O

 
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 c O _ S Y N C 标志。当调用 f s y n c 时,它更新文件的内容,而对于 O _ S Y N C ,则每次对文件调用 w r i t e 函数时就更新文件的内容。
int access const 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)
write read 基本相同,不同是 pwrite pread 都是原子操作(如果文件在打开时设置了 O_APPEND 标记,对 write 也是原子操作) ; 第四个参数 offset 是指相对于文件开始位置的偏移量,应该主意的是调用 pwrite/pread fd 所指向的文件的偏移量并未改变。
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_ASYNC 2 、下面是个命令具有不同的返回值, F_DUPFD, F_GETFD, F_GETFL, F_GETOWN 。其中第一个返回新的文件描述符(类似 dup ),后两个返回当前的标记( flag ),最后一个返回正的进程 ID positive process ID )或者负的进程组 ID negative process group ID )。
关于目录的权限
执行权限允许用户搜索和访问目录(无法 ls ),读权限允许用户列出目录的内容(可以 ls ),写权限意味着可以在该目录中创建文件。
 
其它
当进程推出的时候将会自动关闭所有的文件描述符,运用这个技术,一些程序可以没有明确的关闭已打开的文件描述符。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值