dup2重定向
int dup2(int oldfd,int newfd);
关闭newfd对应的文件描述符,将newfd重新指向为oldfd对应的文件
dup复制文件描述符
int dup(int oldfd);
新返回一个文件描述符指向oldfd对应的文件
实现:在代码中执行两次printf(“hello world\n”);一次输出到hello文件,一次输出到屏幕
涉及到文件重定向
dupdu.c
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main(int argc,char *argv[])
{
//先备份
int outfd=dup(1);
//先做重定向
int fd=open("world",O_WRONLY|O_CREAT,0666);
dup2(fd,1); //标准输出重定向到fd对应的文件
printf("hello world\n");
//需要刷新
fflush(stdout);
//需要恢复1,重新对应标准输出
dup2(outfd,1);
printf("hello world\n");
close(fd);
return 0;
}