Как установить ctime файла с помощью Python?

Как установить ctime файла Unix?

(Я бы предпочел ответ с точки зрения Python. Если нет способа сделать это со стандартным Python, то я полагаю, что C тоже в порядке.)

(Примечание: я знаю, что можно использовать os.utime для установки atime и mtime файла. Меня интересует установка ctime.)

(Примечание 2: я надеюсь, что есть ответ, который работает для любого POSIXoid Unix, но если нет, меня интересуют Darwin и Ubuntu.)


person kjo    schedule 21.05.2011    source источник
comment
Насколько я понимаю, невозможно изменить ctime файла, не испортив все остальное. Зачем вам такое поведение?   -  person Rafe Kettler    schedule 22.05.2011


Ответы (1)


Относительно тривиально установить ctime файлов на текущее время. Просто измените его mtime, измените бит разрешения или даже сделайте на него жесткую ссылку. Насколько я знаю, невозможно установить ctime файла в произвольное значение, используя API системного вызова каким-либо прямым способом.

Если бы у вас был root-доступ, вы могли бы установить системное время, сделать что-то с файлом, чтобы установить ctime на текущее время, а затем снова установить системное время. Также вы можете изменить структуру данных inode на диске. Но обе эти идеи — действительно плохие идеи по целому ряду причин, которые, как я полагаю, мне не придется подробно объяснять.

person Omnifarious    schedule 21.05.2011