Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1063842
  • 博文数量: 573
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 66
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-28 16:21
文章分类

全部博文(573)

文章存档

2018年(3)

2016年(48)

2015年(522)

分类: LINUX

2015-12-08 15:05:12



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;
}   
阅读(702) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~