4.28 UNIX环境高级编程 笔记
2014-04-28 10:58
190 查看
int dup(int filedes);
int dup2(int filedes,int filedes2);
这两个函数都可以实现复制一个现存的文件描述符,但是dup一定返回当前可用最小文件描述符,dup2可以用filedes2参数指定新描述符数值。如果filedes2已经打开,则先将其关闭。如果filedes等于filedes2,则返回filedes2而不关闭。
这些函数返回的新文件描述符与参数参数filesdes共享同一个文件表项。
图3 执行dup之后的内核数据结构
dup2是原子操作,相当于重定向,将第二个文件描述符重定向到第一个文件描述符指向的文件表,并关闭第二个文件描述符之前的文件表项
close(fd)直视关闭了文件描述符
sync刷新所有修改过的块缓冲区
fsync只对文件描述符置顶的文件起作用
fdatasync类似fsync但是只影响文件数据部分,不更新文件属性
fcntl根据参数不同可以:复制一个现有描述符;获得、设置文件描述符标记;获得、设置文件状态标记;获得、设置异步IO所有权;获得、设置记录锁
修改文件描述符标志或者文件状态标志时必须谨慎,要先取得现有标志值,然后根据需要修改它,最后设置新标志值。不能直视执行F_SETFD/f_setfl命令,这样会关闭以前设置的标志位。
int dup2(int filedes,int filedes2);
这两个函数都可以实现复制一个现存的文件描述符,但是dup一定返回当前可用最小文件描述符,dup2可以用filedes2参数指定新描述符数值。如果filedes2已经打开,则先将其关闭。如果filedes等于filedes2,则返回filedes2而不关闭。
这些函数返回的新文件描述符与参数参数filesdes共享同一个文件表项。
图3 执行dup之后的内核数据结构
dup2是原子操作,相当于重定向,将第二个文件描述符重定向到第一个文件描述符指向的文件表,并关闭第二个文件描述符之前的文件表项
close(fd)直视关闭了文件描述符
sync刷新所有修改过的块缓冲区
fsync只对文件描述符置顶的文件起作用
fdatasync类似fsync但是只影响文件数据部分,不更新文件属性
fcntl根据参数不同可以:复制一个现有描述符;获得、设置文件描述符标记;获得、设置文件状态标记;获得、设置异步IO所有权;获得、设置记录锁
修改文件描述符标志或者文件状态标志时必须谨慎,要先取得现有标志值,然后根据需要修改它,最后设置新标志值。不能直视执行F_SETFD/f_setfl命令,这样会关闭以前设置的标志位。
相关文章推荐
- unix环境高级编程 FILE I/O笔记
- 《 Unix环境高级编程 》笔记
- Unix环境高级编程 第一章 学习笔记
- Unix环境高级编程(阅读笔记)----可靠信号
- Unix环境高级编程(阅读笔记)----sigaction函数
- Unix环境高级编程笔记:12、高级IO
- UNIX环境高级编程笔记——高级IO,进程间通信,套接字,高级进程间通信
- unix环境高级编程笔记--高级IO
- unix环境高级编程——笔记3(POSIX & XSI)
- Unix环境高级编程学习笔记整理
- UNIX环境高级编程笔记——7进程环境
- UNIX环境高级编程笔记之高级I/O
- Unix环境高级编程(第二版)学习笔记
- UNIX高级环境编程笔记线程间同步
- UNIX环境高级编程笔记之文件I/O
- UNIX环境高级编程(阅读笔记)---多线程信号
- Unix高级环境编程笔记-2--基本系统数据类型
- UNIX环境高级编程笔记1-sysconf、pathconf和fpathconf函数
- Unix环境高级编程笔记 :7、进程环境
- unix环境高级编程笔记--持续更新