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;
}
本文介绍了如何使用C语言中的dup和dup2函数进行文件描述符的复制和重定向。通过示例代码展示了如何将标准输出重定向到文件,并在完成后恢复到原始状态,从而实现输出既打印到屏幕又写入文件的效果。
1368

被折叠的 条评论
为什么被折叠?



