Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 为什么touch调用dup2()系统调用?_File_Unix_Dup2 - Fatal编程技术网

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 +++