【问题标题】:What do the dup() and dup2() systems really do? [closed]dup() 和 dup2() 系统究竟做了什么? [关闭]
【发布时间】:2011-05-09 10:32:30
【问题描述】:

dup()dup2() 系统调用的真正作用是什么?我将如何在实践中使用它们?

【问题讨论】:

标签: c unix


【解决方案1】:

两者都创建一个与现有打开文件描述相对应的新文件描述符。新旧 fd 之间的大多数属性(如位置)是共享的;我能想到的唯一不共享的属性是 close-on-exec 标志。 dupdup2 之间的区别在于,dup 分配了最低的可用文件描述符编号,而 dup2 允许您选择将分配的文件描述符编号,如果已被占用,则自动关闭并替换它。

【讨论】:

  • 还要注意fcntlF_DUPFD 命令的行为类似于dup2,但不会破坏现有的fd,因此在尝试创建特定的线程程序时可以安全地使用它尚未使用的 fd 号码。
  • 另外,如果newfd引用的文件已经打开,在复制之前会先关闭。
  • @snr:不是“之前”。而是原子地相对于
猜你喜欢
  • 2015-01-10
  • 1970-01-01
  • 2014-09-13
  • 2011-07-23
  • 2012-07-23
  • 2016-09-10
  • 2023-03-15
  • 2012-10-17
  • 2021-06-04
相关资源
最近更新 更多