Что такое альтернатива lstat () в windows?

в linux, когда stat() используется со сломанными файлами ссылок, он терпит неудачу с -1. Поэтому я использовал lstat() которой удалось.

для того же случая в windows, _stat() не со сломанными ярлыками, но нет _lstat() в windows. Пожалуйста, помогите найти альтернативу lstat() в windows.

3 ответов


GetFileAttributes или Getfileattributesexдля вероятно (если я понял stat и lstat справа). Цитата из документов:

поведение символьной ссылки - если путь указывает на символическую ссылку, функция возвращает атрибуты для символической ссылки.


принятый ответ не дает полного stat эквивалентны. The stat struct определяется как

struct stat {
               dev_t     st_dev;     /* ID of device containing file */
               ino_t     st_ino;     /* inode number */
               mode_t    st_mode;    /* protection */
               nlink_t   st_nlink;   /* number of hard links */
               uid_t     st_uid;     /* user ID of owner */
               gid_t     st_gid;     /* group ID of owner */
               dev_t     st_rdev;    /* device ID (if special file) */
               off_t     st_size;    /* total size, in bytes */
               blksize_t st_blksize; /* blocksize for filesystem I/O */
               blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
               time_t    st_atime;   /* time of last access */
               time_t    st_mtime;   /* time of last modification */
               time_t    st_ctime;   /* time of last status change */
           };

но GetFileAttributes.. не предоставляет никакой информации о владельце (возвращает данные в объекте WIN32_FIND_DATA). Если вам нужна информация о владельце, похоже, вы можете использовать GetSecurityInfo [1].

[1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa446629%28v=vs.85%29.aspx


hey _stat () или stat () отлично работает и на сломанных ярлыках. Вот почему в windows нет альтернативы lstat(UNIX).

где в Unix stat () терпит неудачу со сломанными ссылками, поэтому lstat предоставляется для устранения проблемы.

спасибо всем за помощь.