Chinaunix首页 | 论坛 | 博客
  • 博客访问: 573238
  • 博文数量: 117
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 359
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-13 21:58
个人简介

爱上香烟

文章分类

全部博文(117)

文章存档

2018年(3)

2017年(8)

2016年(65)

2015年(41)

我的朋友

分类: C/C++

2016-04-01 15:45:53

原文地址:dup和dup2使用方法 作者:ebayboy



dup(复制文件描述词)
相关函数
open,close,fcntl,dup2
表头文件
#include
定义函数
int dup (int oldfd);
函数说明
dup()用来复制参数oldfd所指的文件描述词,并将它返回。此新的文件描述词和参数oldfd指的是同一个文件,共享所有的锁定、读写位置和各项权 限或旗标。例如,当利用lseek()对某个文件描述词作用时,另一个文件描述词的读写位置也会随着改变。不过,文件描述词之间并不共享close- on-exec旗标。
返回值
当复制成功时,则返回最小及尚未使用的文件描述词。若有错误则返回-1,errno会存放错误代码。错误代码EBADF参数fd非有效的文件描述词,或该文件已关闭。
 



dup2(复制文件描述词)
相关函数
open,close,fcntl,dup
表头文件
#include
定义函数
int dup2(int odlfd,int newfd);
函数说明
dup2()用来复制参数oldfd所指的文件描述词,并将它拷贝至参数newfd后一块返回。若参数newfd为一已打开的文件描述词,则newfd所指的文件会先被关闭。dup2()所复制的文件描述词,与原来的文件描述词共享各种文件状态,详情可参考dup()。
返回值
当复制成功时,则返回最小及尚未使用的文件描述词。若有错误则返回-1,errno会存放错误代码。
附加说明
dup2()相当于调用fcntl(oldfd,F_DUPFD,newfd);请参考fcntl()。
错误代码
EBADF 参数fd 非有效的文件描述词,或该文件已关闭


#include
#include
#include

int main(int argc,char ** argv)
{
        int fd,fd1,fd2;
        fd2 = 5;
        fd = open("temp",O_CREAT|O_RDWR|O_TRUNC,0644);

        fd1 = dup(fd);
        write(fd1,"hello",5);
        if(dup2(fd,fd2)==-1)
                perror("dup2 error");
        write(fd2,"world",5);
        printf("fd = %d,fd1 = %d,fd2=%d\n",fd,fd1,fd2);
            
        return 0;
}  
阅读(939) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~