首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dup2不仅仅是复制文件描述符吗?

dup2不仅仅是复制文件描述符吗?
EN

Stack Overflow用户
提问于 2012-01-05 17:06:13
回答 1查看 615关注 0票数 1

首先,我打开一个文件,然后使用dup2复制文件描述符。为什么,当第一个文件描述符关闭时,我仍然可以通过另一个文件描述符读取文件?

代码语言:javascript
复制
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    int fd,fd2=7;   /*7 can be any number < the max file desc*/
    char buf[101];

    if((fd = open(argv[1], O_RDONLY))<0)      /*open a file*/
        perror("open error");
    dup2(fd,fd2);                             /*copy*/
    close(fd);

    if(read(fd2,buf,100)<0)
        perror("read error");
    printf("%s\n",buf);

    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-05 17:15:03

根据猜测,实际的“打开文件描述”数据是引用计数的,因此当您复制文件描述符时,所有发生的事情都是它引用的数据的计数递增。当您调用close()时,计数会递减。

因此,关闭第一个描述符实际上并不会使第二个描述符无效。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8739926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档