コマンドは内部的に正確にどのように機能しますか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
したがって、ファイルのタイムスタンプを変更し、それを使用してファイルのタイムスタンプを更新する機能があります。これが内部的に機能する方法です。