dup/dup2/dup3(输入文件描述符重定向)

一、dup 系列函数的功能

对输入文件描述符重定向。
dup参数越多,功能越齐全,要求也越细。

二、dup的基本结构

这里写图片描述
这里写图片描述
这里写图片描述

三、dup的代码实现

Makefile文件:
  1 dup : dup.c                                                                 
  2     gcc  -o $@ $^
  3 .PHONY:clean
  4 clean:
  5     rm -f dup log
  1 #include<unistd.h>                                                          
  2 #include<stdio.h>
  3 #include<sys/types.h>
  4 #include<fcntl.h>
  5 #include<string.h>
  6 
  7 int main()
  8 {               
  9     int fd = open("./log", O_CREAT|O_RDWR , 0666);
 10     if( fd < 0 )
 11     {
 12         perror("open!");
 13         return 1;
 14     }
 15     close(1);//关闭想要重定向的fd(最小fd)
 16     int new_fd = dup(fd);//重定向标准输出到打开文件(fd)
 17     if( new_fd == -1 )
 18     {
 19         perror("dup!");
 20         return 2;
 21     }
 22     close(fd);
 23     char buf[1024];
 24     while(1)
 25     {
 26         memset(buf , '\0' , sizeof(buf)-1);
 27         fgets(buf , sizeof(buf) , stdin);
 28         if(strncmp("quit" , buf , 4) == 0)
 29         {
 30             break;
 31         }
 32         printf("%s",buf);//直接打印到标准输出,即可写入文件
 33         fflush(stdout);
 34     }
 35     close(new_fd);
 36     return 0;
 37 }          

四、结果展示

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值