gpt4 book ai didi

c - dup2 是否不仅仅是复制文件描述符?

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:29 25 4
gpt4 key购买 nike

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

#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;
}

最佳答案

据推测,实际的“打开文件描述”数据是引用计数的,因此当您复制文件描述符时所发生的只是它引用的数据的计数增加。当您调用 close() 时,计数会减少。

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

关于c - dup2 是否不仅仅是复制文件描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8739926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com