С++ POSIX (или для Linux) и WIN32 вызывают искусственное изменение даты создания файла.

Для начала: мой код зависит от Boost.

Мне нужно изменить даты создания файлов, чтобы вводить ошибки в мои модульные тесты.

Есть ли переносимый способ сделать это либо в стандартных библиотеках STL, либо в C++, либо в boost(::filesystem)? Если нет, то знает ли кто-нибудь о хорошей простой абстракции только для заголовка C++ (или очень простой), которая дополнит то, что находится в boost /STL/STD?

Если нет, мне требуются заголовки/имена функций/структуры данных для искусственного изменения даты создания файла после создания в Windows и Linux (или более переносимое решение для Unix).

Любые указатели помогут.


person Hassan Syed    schedule 11.01.2011    source источник
comment
вам нужна дата создания или дата изменения?   -  person Sam Miller    schedule 12.01.2011
comment
Мне нужна была дата создания, я создаю механизм сериализации ключевых объектов в стиле реестра Windows для объектов буфера протокола в файловой системе. Он имеет двухэтапную фиксацию, поэтому мне нужно изменить дату создания, чтобы повредить частичную двухфазную фиксацию.   -  person Hassan Syed    schedule 12.01.2011


Ответы (1)


Решением POSIX будет utimes.

#include <sys/time.h>

int utimes(const char *filename, const struct timeval times[2]);

Решение win32 будет SetFileTime.

person CB Bailey    schedule 11.01.2011