linux:文件描述符重定向dup&dup2
2017-07-08 12:51
495 查看
ForeWord
本文介绍了对输入文件描述符重定向的函数dup&dup2,并用代码验证其功能。~tips:全文阅读需5min~
Before
在没有duo&dup2,之前,要实现文件描述符重定向(输入)是这样做的:先关闭1号文件描述符,再打开文件完成重定向。代码:
运行:
dup
dup是系统提供的进行文件描述符重定向的接口:其中:
1. odfd是当前文件描述符的一份拷贝
2. dup使用最小未被使用的文件描述符作为新文件的文件描述符
接下来对上边的代码做改动,观察现象:
1.直接调用dup函数,打印newdup的值:
运行程序:
解释:开始时关闭了1号文件描述符,而fd又占用了1号,所以最小未被使用的文件描述符是3,返回值就是3
2.注释掉开始的colse(1),再观察newdup的值:
运行程序:
解释:开始并未关闭1号文件描述符,fd占用了3号,此时最小未被使用文件描述符变为4,故返回值为4
3.注释掉开始的colse(1),然后在dup之前close1:
运行程序:
解释:fd占用了3号后1号又被关闭,此时最小未被使用文件描述符变为1,故返回值为1
dup2
dup2也是系统提供的进行文件描述符重定向的接口:返回值描述如下:
博主翻译一下:
newfd是oldfd的一份拷贝(注意这里拷贝的是以文件描述符为下标,所标识的文件描述符数组当中的内容,并非下标),oldfd可以指定值。
如果oldfd失效,函数调用失败。newfd不关闭
如果oldfd有效,newfd和oldfd具有完全相同的值,函数什么都不做,返回newfd
在代码中调用dup2:
此时不用close1也可以实现输入重定向:
相关文章推荐
- 文件描述符重定向---dup&dup2
- linux --dup dup2 文件描述符重定向函数--输入输出重定向
- linux 经典的例子 解释 dup dup2 文件描述符重定向函数 输入输出重定向
- linux—dup和dup2重定向文件描述符
- Linux--重定向dup&&dup2
- linux下用 dup dup2 文件描述符重定向函数 输入输出重定向
- linux 经典的例子 解释 dup dup2 文件描述符重定向函数 输入输出重定向
- linux句柄重定向之dup和dup2
- Linux文件,文件描述符以及dup()和dup2()
- 一个关于dup、dup2 文件描述符重定向函数的程序
- linux 经典的例子 解释 dup dup2 文件描述符重定向函数 输入输出重定向
- [linux]--使用dup和dup2重定向和还原
- linux系统编程之文件与IO(八):文件描述符相关操作-dup,dup2,fcntl
- Linux文件,文件描述符以及dup()和dup2()
- linux之dup&dup2
- Linux系统编程——文件描述符的复制:dup()和dup2()
- 【Linux系统编程】 文件描述符的复制:dup()和dup2()
- linux句柄重定向之dup和dup2
- 【Linux】dup和dup2函数解析与文件描述符
- linux句柄重定向之dup和dup2