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),写权限意味着可以在该目录中创建文件。
 
其它
当进程推出的时候将会自动关闭所有的文件描述符,运用这个技术,一些程序可以没有明确的关闭已打开的文件描述符。
 

python几点要特别注意! -- 不断更新中

1、了解何时去使用 self 和 __init__ 当定义你自已的类方法时,你必须 明确将 self 作为每个方法的第一个参数列出,包括 __init__。当从你的类中调用一个父类的一个方法时,...
  • teresa502
  • teresa502
  • 2011年09月22日 11:44
  • 8424

db file async I/O submit 等待事件优化

db file async I/O submit 等待事件优化   一、数据发生db file async I/O submit 我们从数据库awr报告中经常会看到很高db file...
  • wuweilong
  • wuweilong
  • 2015年03月02日 15:20
  • 4592

【JAVA】File I/O

Java:File I/O
  • mjianglei
  • mjianglei
  • 2016年09月12日 00:30
  • 709

Linux file I/O

#include int dup(int filedes) ;     =>   fcntl (filedes, F_DUPFD, 0);int dup2(int filedes, int filed...
  • cindy9902
  • cindy9902
  • 2010年08月15日 15:34
  • 488

linux file I/O

1.1、 Linux系统调用     所谓系统调用是指操作系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的特殊服务。    在linux中用户程序不能直接...
  • aaaaatiger
  • aaaaatiger
  • 2008年10月26日 18:04
  • 576

Java学习笔记—Java I/O系统(一)

根据Java编程思想学了一段时间的Java,准备笔记写到博客上,算是一次复习。 Java I/O系统(一):概述 编程语言常用流来表示输入输出对象,这屏蔽了各种各样I/O设备的不同,提供了一致的数据I...
  • hn_lgc
  • hn_lgc
  • 2016年06月12日 22:09
  • 352

NodeJS学习笔记(一)——异步I/O的理解

操作系统对I/O的操作分为阻塞I/O和非阻塞I/O。阻塞I/O造成了CPU的等待,使CPU不能得到充分的利用;而非阻塞I/O虽然不必等待完整I/O的返回,但需要通过轮询重复的调用判断操作,这种判断操作...
  • Jacie_chaochao
  • Jacie_chaochao
  • 2015年11月30日 21:47
  • 1523

linux下磁盘I/O查看

Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令 来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 1. 基本使用 $iost...
  • sd4015700
  • sd4015700
  • 2014年04月11日 15:22
  • 2609

Linux下测试磁盘I/O性能

hdparm hdparm -tT /dev/sda 测试硬盘速度 hdparm -A1 /dev/sda 开启硬盘预读取功能 hdparm -c3 /dev/sda 开启硬盘32位 hd...
  • Genius_LG
  • Genius_LG
  • 2014年05月31日 14:32
  • 818

【重要】Linux I/O模型

socket阻塞与非阻塞,同步与异步、I/O模型 分类: c/c++ socket网络编程2012-04-12 16:35 32926人阅读 评论(22) 收藏 举报 socket...
  • chenchong_219
  • chenchong_219
  • 2014年06月29日 15:10
  • 1639
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux 学习笔记之 FILE I/O
举报原因:
原因补充:

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