Не уверен, что это возможно, по крайней мере из пакета syscall
.
Просмотр исходного кода для скажем syscall.Chtimes :
func Chtimes(name string, atime time.Time, mtime time.Time) error {
var utimes [2]syscall.Timespec
utimes[0] = syscall.NsecToTimespec(atime.UnixNano())
utimes[1] = syscall.NsecToTimespec(mtime.UnixNano())
if e := syscall.UtimesNano(fixLongPath(name), utimes[0:]); e != nil {
return &PathError{"chtimes", name, e}
}
return nil
}
Дублирование этого кода - и удаление вызова fixLongPath
, который, как я предполагал, последовал за символическими ссылками - все еще влияет на целевой файл, а не на исходную символическую ссылку.
Даже при попытке выполнить эту операцию с символической ссылкой, которая указывает на несуществующий файл, возвращает ошибку времени выполнения no such file or directory
.
A CGO
pkg - может, но это кажется излишним.