2014-01-16 2 views
0

У меня есть структура stat, и я хочу создать папку или файл и хочу заставить ее иметь ту же информацию, что и в stat struct. Например:заставить созданный файл или папку иметь определенную структуру stat

create file: test.txt 
The file's last modification date is today 16.01.2014 
change file's stat so that it shows: 
last modified on 01.01.2050 

Как я могу это сделать?

ответ

1

Если вы хотите установить поля mtime/atime, вы можете использовать функцию utime(). Используйте его после создания файла/каталога.

mode поле устанавливается с chmod()

uid/gid, если вы корень, устанавливаются с chown().

Поля size и nlinks будут иметь правильное значение, если вы установите для них информацию (данные файла и структуру каталогов, содержащие файл).

Но поля ino, dev и ctime устанавливаются внутри системы и не могут быть изменены. Во всяком случае, вы не хотели бы их устанавливать.

+0

На самом деле я хочу создать файл со специальной структурой stat! Чтобы быть конкретным, я восстанавливаю файл, который у меня есть раньше. Также должна быть установлена ​​информация о статусе. –

+0

@hhachem: О, посмотри мой обновленный ответ. – rodrigo

+0

На второй ноте я только что проверил tar. Tar оставляет за собой и файл. Так что это должно быть возможно! –

1

Я не думаю, что вы можете, но все в порядке.

Значительная часть информации в struct stat является информацией о реализации файловой системы; файл «тот же», даже если (например) он имеет другой индексный дескриптор.

Вы должны смотреть на индивидуальную библиотеку файлов связанных вызовов, чтобы все поля, которые являются на самом деле актуальны матч, хотя:

  • st_mode может быть установлен chmod()
  • st_uid и st_gid может быть устанавливается chown()
  • st_atime и st_mtime могут быть установлены utime()

Не существует единой «заданной все поля stat», поскольку это не имеет смысла.

+0

интересный. Думаю, это должно помочь мне дальше. Спасибо.Я должен согласиться с ответом Родриго, хотя он быстрее отвечал. –

Смежные вопросы