[Linux] 文件重定向函数dup2()

dup2函数可以复制文件描述符,从而实现文件重定向。该函数通常可以用来重定向进程的程序的标准输入输出。
该函数原型如下:

int dup2 (int __fd, int __fd2);

如果返回值为-1,则表示重定向失败。
该函数将会把文件描述符__fd2替换为__fd。
下面是一个重定向标准输入输出的简单例子:

#include <unistd.h>
#include <fcntl.h>
int main() {
    int fd1 = open("input.txt", O_RDONLY), fd2 = open("output.txt", O_WRONLY);
    dup2(fd1, STDIN_FILENO);
    dup2(fd2, STDOUT_FILENO);
    return 0;
}

这样就可以把STDIN重定向到文件input.txt,STDOUT重定向到文件output.txt了。
补充一点:如果需要让输出文件自动创建,open函数需要加上O_CREAT标识:

open("output.txt", O_WRONLY | O_CREAT, 0777);

如果需要让文件自动清空,需要加上O_TRUNC标识:

open("output.txt", O_WRONLY | O_TRUNC);

发表评论

电子邮件地址不会被公开。 必填项已用*标注