gpt4 book ai didi

fcntl - 带参数 F_DUPFD 的 fcntl 的目的是什么

转载 作者:行者123 更新时间:2023-12-04 02:41:21 26 4
gpt4 key购买 nike

跟踪一个oracle进程,发现它首先打开一个文件/etc/netconfig作为文件句柄11,然后复制它作为256 通过使用参数 F_DUPFD 调用 fcntl,然后关闭 原始文件句柄 11。后来它使用文件句柄 256 读取。那么复制文件句柄有什么意义呢?为什么不只处理原始文件句柄?

12931:   0.0006 open("/etc/netconfig", O_RDONLY|O_LARGEFILE)    = 11
12931: 0.0002 fcntl(11, F_DUPFD, 0x00000100) = 256
12931: 0.0001 close(11) = 0
12931: 0.0002 read(256, " # p r a g m a i d e n".., 1024) = 1024
12931: 0.0003 read(256, " t s t p i _ c".., 1024) = 215
12931: 0.0002 read(256, 0x106957054, 1024) = 0
12931: 0.0001 lseek(256, 0, SEEK_SET) = 0
12931: 0.0002 read(256, " # p r a g m a i d e n".., 1024) = 1024
12931: 0.0003 read(256, " t s t p i _ c".., 1024) = 215
12931: 0.0003 read(256, 0x106957054, 1024) = 0
12931: 0.0001 close(256) = 0

最佳答案

在某些系统上,例如 Solaris,带有 FILE 的标准 I/O 仅适用于文件描述符 0-255,因为它对 FILE 结构的实现使用 8 位整数而不是整数。如果程序使用大量文件描述符,使用 fnctl(fd, F_DUPFD, 256) 保留文件描述符 3-255 会很有用。否则,如果您打开了 256 个文件,fopen()freopen()fdopen() 等函数将失败。

关于fcntl - 带参数 F_DUPFD 的 fcntl 的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2619693/

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