c++重定向dup2
-
进程会默认打开三个文件,即标准输入、标准输出、标准错误,分别对应文件描述符0 1 2。这也是为什么我们打开文件时,返回的文件描述符是从3开始
-
文件描述符的分配规则为从0开始,扫描文件描述符表中,没有被使用的数值最小的下标,作为新打开文件的文件描述符
![]()
-
dup
打开一个新的文件描述符,指向和oldfd同一个文件,共享文件偏移量和文件状态。
#include <unistd.h>
int dup(int oldfd);
- dup2
把指定的newfd也指向oldfd指向的文件,也就是说,执行完dup2之后,有newfd和oldfd同时指向同一个文件,共享文件偏移量和文件状态
#include <unistd.h>
int dup2(int oldfd, int newfd);

- 标准日志重定向到日志文件
dup2(fileno(fp), STDOUT_FILENO);
dup2(fileno(fp), STDERR_FILENO);
ls -trl /proc/16086/fd 可以看到,文件描述符1 2都已经重定向了



浙公网安备 33010602011771号