File 为什么touch调用dup2()系统调用?
这就要结束了。为什么File 为什么touch调用dup2()系统调用?,file,unix,dup2,File,Unix,Dup2,这就要结束了。为什么touch调用dup2()系统调用 这是一件历史文物 open()+dup2()模式来自fd_reopen()函数,coreutils代码库中的几个程序使用该函数 在此之前,fd_reopen()没有执行open()+dup2(),而是在打开新的文件描述符之前关闭了所需的文件描述符。touch在开始使用此功能时就是这种情况。根据提交消息,目的是减少touch打开的文件描述符的数量。我对此进行了归档。 $ > strace touch 1 2>&1 | ta
touch
调用dup2()系统调用
这是一件历史文物 open()+dup2()模式来自fd_reopen()函数,coreutils代码库中的几个程序使用该函数 在此之前,fd_reopen()没有执行open()+dup2(),而是在打开新的文件描述符之前关闭了所需的文件描述符。touch在开始使用此功能时就是这种情况。根据提交消息,目的是减少touch打开的文件描述符的数量。我对此进行了归档。
$ > 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 +++