touch -tは内部的にどのように機能しますか?

touch -tは内部的にどのように機能しますか?

コマンドは内部的に正確にどのように機能しますかtouch -t? (ソースコードを見つけようとしましたが、見つかりませんでした。)

ベストアンサー1

時にはソースコードが不要な場合もあります。使用strace

$ strace touch -t 201212121212 foobar
execve("/usr/bin/touch", ["touch", "-t", "201212121212", "foobar"], [/* 61 vars */]) = 0
[...] lots of noise [...]
open("foobar", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
dup2(3, 0)                              = 0
close(3)                                = 0
utimensat(0, NULL, {{1355310720, 0}, {1355310720, 0}}, 0) = 0
close(0)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

こんにちは、utimensat()何をしますか?

$ man utimensat

NAME
   utimensat, futimens - change file timestamps with nanosecond precision

touchしたがって、ファイルのタイムスタンプを変更し、それを使用してファイルのタイムスタンプを更新する機能があります。これが内部的に機能する方法です。

おすすめ記事