< p >
dup()
和 dup2()
系统调用到底是做什么的?在实践中我应该如何使用它们?
这两个函数都会创建一个新的文件描述符,对应于一个已经存在的打开的文件描述符。大部分属性(比如位置)在旧的和新的文件描述符之间是共享的;唯一不共享的属性我能想到的是 close-on-exec 标志。dup 和 dup2 的区别在于,dup 分配最低可用的文件描述符号码,而 dup2 允许你选择要分配的文件描述符号码,并原子性地关闭并替换它,如果该号码已被其他文件占用。
F_DUPFD
命令的fcntl
函数与dup2
函数的行为类似,但不会覆盖现有的文件描述符(fd),因此在多线程程序中尝试创建一个尚未被占用的特定fd号码时,可以安全地使用它。 - R.. GitHub STOP HELPING ICEnewfd
所引用的文件已经打开,则在执行复制之前将关闭该文件。 - Soner from The Ottoman Empire