Linux 中进行文件描述符的重定向可以使用两个函数:dup函数和dup2函数,其中还有一个dup3函数,但是这个是Linux后面版本添加的,不是所有的Linux内核都支持,在这里不讨论。
在Linux系统中约定文件描述符 0、1、2 对应标准输入、标准输出、标准错误,默认开启。
dup()
#include <unistd.h>
int dup(int fd);
使用dup()函数的时候,参数是新的文件描述符期望指向的文件描述符。返回文件描述符表中最小的没有被使用的文件描述符。
如果我们的fd除了默认打开的0、1、2之外,没有被使用的。我们调用dup(1),那么最小的没有被使用的fd = 3 就会指向跟fd = 1的同一个文件表。
他的做法就类似以下做法:
fcntl(1