关闭

linux 学习笔记之 FILE I/O

标签: linuxfileaccessc数据库path
407人阅读 评论(0) 收藏 举报
分类:
 
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),写权限意味着可以在该目录中创建文件。
 
其它
当进程推出的时候将会自动关闭所有的文件描述符,运用这个技术,一些程序可以没有明确的关闭已打开的文件描述符。
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:56146次
    • 积分:902
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:10篇
    • 译文:2篇
    • 评论:6条
    文章分类
    最新评论