Chinaunix首页 | 论坛 | 博客
  • 博客访问: 52553
  • 博文数量: 15
  • 博客积分: 481
  • 博客等级: 下士
  • 技术积分: 195
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-08 22:29
文章分类

全部博文(15)

文章存档

2013年(5)

2012年(1)

2009年(4)

2008年(5)

分类: LINUX

2012-11-06 14:37:28

1 buffered I/O & unbuffered I/O
在我看来,像read write这些系统调用也是有buffer的,其buffer就是kernel提供的块buffer,这里面的unbuffer是针对系统调用而言,即每次read/write都会调用一次系统调用。
像fputs这些buffered I/O,在用户空间给它有分配buffer,即每次调用fputs等函数并不会立即调用read/write等系统调用。故称之为buffered I/O
而fflush与sync也是有区别的,我猜想前者是更新用户空间的缓冲区,即立即调用系统函数执行,而后者是立即进行I/O操作,是有区别的,操作系统对程序退出时对这两个函数的处理方式也不一样。。。

2 > >> 2>&1 < 
这些重定向符号,代表将process entry table中的这些file descriptor(1,2)的file pointer重定向到指定文件在file table中的entry. >代表open(, O_TRUNK,.)模式,而>>代表O_APPEND.
eg: 2>&1 即将标准错误输出的file pointer指向标准输出的文件。
     2>&1 equal dup2(1, 2)

3 read write函数一次能读写多大的数据?
按理来说,根据read/write函数原型,ssize_t read(int fd, void *buf, size_t n),其返回类型是ssize,应该是size_t类型的一半,在32位机上,会是2G还是4G呢?

4 一些位操作技巧
  mask |= flag // turn on flag
  mask &=~flag //turn off flag
  mask & flag == flag //test if flag bit is set
阅读(523) | 评论(0) | 转发(0) |
0

上一篇:wlk

下一篇:openstack之nova vnc

给主人留下些什么吧!~~