dup与dup2函数
Posted littlefishc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dup与dup2函数相关的知识,希望对你有一定的参考价值。
依赖的头文件
#include <unistd.h>
函数定义
int dup(int oldfd); int dup2(int oldfd, int newfd);
函数作用
- dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。
- 如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。
- 如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。
实战
- 需求:在代码中执行2次printf("hello Linux "),前一次输入到world文件中,后一次输入到屏幕上
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
void file_Redirect()
{
//先备份现场
int outfd = dup(1);
//先做重定向
int fd = open("world", O_WRONLY|O_CREAT,0666);
//标准输出到重定向fd到对应的文件
dup2(fd, 1);
printf("hello Linux
");
//需要来一次刷新
fflush(stdout);
//需要恢复1,重新到标准输出
dup2(outfd, 1);
printf("hello Linux
");
}
int main(int argc, char* argv[])
{
file_Redirect();
return 0;
}
以上是关于dup与dup2函数的主要内容,如果未能解决你的问题,请参考以下文章