码迷,mamicode.com
首页 > 其他好文 > 详细

文件描述符的复制——实现输出重定向

时间:2018-07-22 15:22:12      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:ring   nbsp   保存   ror   UNC   成功   return   显示器   复制文件描述符   

dup(2)   dup2(2)

#include <unistd.h>
int dup(int oldfd);
功能:复制文件描述符
参数:
oldfd:指定源文件的描述符
返回值:
错误 -1 errno被设置
成功 返回新的文件描述符

新的文件描述符使用未使用的、最小的文件描述符

 

int dup2(int oldfd, int newfd);
功能:复制文件描述符
参数:
oldfd:源描述符
newfd:目的描述符
返回值:
错误 -1 errno被设置
成功 返回新的文件描述符

 1 //利用dup和dup2完成输出重定向
 2 #include <stdio.h>
 3 #include <sys/types.h>
 4 #include <sys/stat.h>
 5 #include <fcntl.h>
 6 #include <unistd.h>
 7 #include <string.h>
 8 int main(int argc,char *argv[]){
 9     char *msg="I am test...\n";
10     int flags=O_WRONLY|O_CREAT|O_TRUNC;
11     //打开文件,将标准输出重定向到这个文件。argv[1]
12     int fd=open(argv[1],flags,0644);//fd 3
13     if(fd==-1){
14         perror("open");
15         return -1;
16     }
17     int s_fd=dup(1);//s_fd  4 保存现场
18 
19     dup2(3,1);//将文件的描述符定位到标准输出上
20     //关闭文件描述符
21     close(fd);
22     //向标准输出,输出字符串,内容输出到了文件里
23     write(1,msg,strlen(msg));
24     //恢复现场
25     close(1);
26     dup(s_fd);
27     close(s_fd);
28     //输出到显示器 
29     write(1,msg,strlen(msg));
30     return 0;
31 }

 

文件描述符的复制——实现输出重定向

标签:ring   nbsp   保存   ror   UNC   成功   return   显示器   复制文件描述符   

原文地址:https://www.cnblogs.com/qiuyuwutong/p/9349841.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!