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
阅读(552) | 评论(0) | 转发(0) |