内核中几乎所有的IO都会经过内核的块缓冲区。所以,所谓的“不带缓冲的IO”,是指在用户层的进程对读写不进行自动的缓冲。
fd1、 fd2 和 fd3 指向的是同一个v节点表,fd1 和 fd2 指向的同一个文件表项。F_SETFL影响的是fd1指向的文件表项中的文件状态标志。F_SETFD 作用于fd1 只对fd1 文件描述符状态。
关于F_SETFL 和 F_SETFD的区别,从网上截取一段整理资料如下:
在 lseek 定位处读可以,但是在 lseek 处写时,文件指针会移动到最后,不能再指定的位置写。