2010-01-01 65 views
1

我有一个程序(jhead),对Windows和通用Unix变体都进行了很少的调整。有时,Windows用户询问是否可以修改它以设置文件的“创建日期/时间”,但我没有看到用POSIX API做到这一点的方法。我目前正在做的是:使用POSIX API设置窗口创建日期

{
    struct utimbuf mtime;
    mtime.actime = NewUnixTime;
    mtime.modtime = NewUnixTime;
    utime(FileName,& mtime);
}

理想情况下,struct utimebuf只会有创建时间,但它不会。它让我感到需要很多特定于Windows的非可移植代码来改变Windows下的创建时间。有没有另一种POSIX的方式呢?有什么建议么?

回答

1

POSIX只能识别三种不同的文件时间:

  1. 的atime(访问时间):最后时刻的文件读取
  2. 的mtime(修改时间):上次文件的时间写
  3. 的ctime(属性改变的时间):最后时刻的文件的元数据被修改

底层操作系统中可能存在的任何其他文件时间都需要操作系统特定的API调用才能进行修改。

而不用担心创建不可移植的代码;只有这些时间真的存在于大多数* nix变体下。