dup函数和dup2函数

dup函数和dup2函数

有时候,我们希望把标准输入重定向到一个文件,或者把标准输出重定向到一个网络连接中(如CGI编程)。这个时候可以通过下面用于复制文件描述符的dup或dup2函数实现:

1
2
3
#include <unistd.h>
int dup(int file_description);
int dup2(int file_description_one, int file_description_two);

参数介绍

dup函数

dup函数创建一个新的文件描述符,该新的文件描述符和原有文件描述符file_description指向相同的文件、管道或者网络连接。并且dup返回系统最小可用的文件描述符。

dup2函数

dup2和dup作用是一样的,不过它将返回第一个不小于file_description_two的文件描述符。

返回值

成功,则返回新的的文件描述符。失败,则返回-1,并且设置errno。

注意:通过dup和dup2创建的文件描述符并不继承原文件描述符的属性,比如:close-on-exec和non-blocking等,这个时候需要使用fcntl来设置。