Как получить доступ к ctime, mtime, … символьной ссылки?

На Unix символьные ссылки являются указателями на другой файл. Не только файл, но также и символьная ссылка имеют ctime, mtime, …. Я знаю, что ко времени символьных ссылок можно получить доступ, как ls дисплеи это. Если я использую один из рубина File#ctime, File#mtime, …, я всегда получаю атрибут файла, на который символьная ссылка указывает, не символьной ссылки. Как я могу читать, это оценивает в рубине? Если это не возможно в рубине, скажите мне, как сделать это в C. Я записал бы свое собственное c расширение в этом случае.

6
задан johannes 5 January 2010 в 22:56
поделиться

3 ответа

Use File#lstat(). Пример:

# This is a dummy symlink; there's no file named "foo".
ln -s foo bar

# Run irb.
irb(main):001:0> File.lstat("bar")
=> #<File::Stat dev=0x801, ino=90113, mode=0120777, nlink=1, uid=1000, gid=1000, rdev=0x0, size=3, blksize=4096, blocks=0, atime=2010-01-05 17:59:06 -0500, mtime=2010-01-05 17:59:05 -0500, ctime=2010-01-05 17:59:05 -0500>

# Get the mtime of the link.
irb(main):002:0> File.lstat("bar").mtime
=> 2010-01-05 17:59:05 -0500
10
ответ дан 9 December 2019 в 20:44
поделиться

Есть не только атрибуты симлинки и атрибуты конечной цели, но и, если симлинка сама по себе на другую симлинку, один или несколько промежуточных шагов; чтобы получить все атрибуты, нужно сделать lstats в цикле чтения ссылок.

.
1
ответ дан 9 December 2019 в 20:44
поделиться

lstat() может сделать это на C; не уверен, есть ли рубиновый эквивалент.

.
1
ответ дан 9 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: