file – 为什么touch会调用dup2()系统调用?
发布时间:2020-12-15 20:52:36 所属栏目:安全 来源:网络整理
导读:这是 this question.为什么touch会调用dup2()系统调用? $ strace touch 1 21 | tailclose(3) = 0open("1",O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK,0666) = 3dup2(3,0) = 0close(3) = 0utimensat(0,NULL,0) = 0close(0) = 0close(1) = 0close(2) = 0exit_grou
这是
this question.为什么touch会调用dup2()系统调用?
$> 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,0) = 0 close(0) = 0 close(1) = 0 close(2) = 0 exit_group(0) = ? +++ exited with 0 +++ 解决方法
这是一件历史文物.
open()dup2()模式来自fd_reopen()函数,该函数由coreutils代码库中的几个程序使用. 在coreutils commit e373bb1之前,fd_reopen()没有执行open()dup2(),但在打开新文件描述符之前关闭了所需的文件描述符.触摸在coreutils commit 478bd89开始使用此功能就是这种情况.根据提交消息,目的是减少触摸打开的文件描述符的数量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |