您的位置:首页 > 运维架构 > Linux

Linux--重定向dup&&dup2

2017-06-05 23:46 337 查看

概述

dup和dup2。它们的作用都是用来复制一个文件的描述符。它们经常用来重定向进程的stdin、stdout和stderr。

dup和dup2

函数原型:

#include <unistd.h>
int dup(int oldfd);
int dup2(int oldfd, int newfd);


dup:dup()使用最小的未使用的描述符来描述新的描述符。

dup2:dup2()是把newfd成为oldfd的副本。

例:我们将printf函数重定向到文件中,也就是说printf的内容全部输入到文件里。

代码:

#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>

int main()
{
int fd = open("./myfile",O_CREAT|O_RDWR,0666);
if(fd < 0)
{
perror("open");
return 1;
}

close(1);
//dup方法
//int new_dup = dup(fd);
//dup2方法
int new_dup = dup2(fd,1);

if(new_dup < 0)
{
perror("dup");
return 2;
}
close(fd);
char buf[1024];
while(1)
{
memset(buf,'\0',sizeof(buf));
fgets(buf,sizeof(buf),stdin);
if(strncmp(buf,"quit",4) == 0)
break;
printf("%s",buf);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux 重定向 dup dup2