2010-01-01 64 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變體下。