首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么touch调用dup2() syscall?

为什么touch调用dup2() syscall?
EN

Stack Overflow用户
提问于 2016-11-06 14:11:42
回答 1查看 155关注 0票数 4

这是来自this question的。为什么touch要调用dup2() syscall?

代码语言:javascript
复制
$ > strace touch 1 2>&1 | tail
close(3)                                = 0
open("1", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
dup2(3, 0)                              = 0
close(3)                                = 0
utimensat(0, NULL, NULL, 0)             = 0
close(0)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++
EN

回答 1

Stack Overflow用户

发布于 2018-05-01 15:15:08

这是一件历史文物。

fd_reopen() +dup2()模式来自coreutils代码库中的几个程序使用的coreutils()函数。

coreutils commit e373bb1之前,fd_reopen()没有执行open()+dup2(),而是在打开新的文件描述符之前关闭了所需的文件描述符。这就是当touch在coreutils commit 478bd89上开始使用这个功能时的情况。根据该提交消息,其目的是减少接触的文件描述符的数量。

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

https://stackoverflow.com/questions/40446555

复制
相关文章

相似问题

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