在此随手记录一些unistd.h
文件中的函数
dup
声明:int dup(int oldfd)
功能:复制文件描述符,重定向输入输出
返回值:成功返回当前系统可用的最小整数值,否则返回-1
dup2
声明:int dup2(int oldfd, int newfd)
功能:复制文件描述符,重定向输入输出
返回值:返回一个不小于newfd
的整数值,分两种情况:
- 如果
newfd
已经打开,则先将其关闭,在复制文件描述符; - 如果
newfd
等于oldfd
,则返回newfd
,而不关闭它;
复制文件描述符之后,新旧文件描述符的特点
- 使用dup或dup2复制文件描述符后,新文件描述符和旧文件描述符指向同一个文件,管道或网络连接,共享文件的锁定、读写位置和各项权限。
- 当关闭新的文件描述符时,通过旧文件描述符可操作文件。
- 当关闭旧的文件描述符时,通过新文件描述符可操作文件。
注意:新旧文件描述符是共享文件偏移量和文件状态标志的,也就是说如果其中一个文件描述符使用了seek
修改文件偏移量,那么另外一个也会改变。