7

在 linux 中,当stat()与断开的链接文件一起使用时,它会以-1. 所以我用lstat()了哪个成功了。

对于 windows 中的相同情况,_stat()由于快捷方式损坏而失败,但_lstat()windows 中没有。请帮助lstat()在 Windows 中找到替代方案。

4

3 回答 3

8

接受的答案没有提供完整的stat等价物。stat结构定义为

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

于 2015-01-30T18:14:51.967 回答
7

GetFileAttributesGetFileAttributesEx可能(如果我理解正确stat的话lstat)。引用文档:

符号链接行为 - 如果路径指向符号链接,则函数返回符号链接的属性。

于 2012-08-23T06:40:13.220 回答
3

嘿 _stat() 或 stat() 在损坏的快捷方式上也能正常工作。这就是原因,在 Windows 中没有像 lstat(UNIX) 这样的替代方法。

在 Unix 中,stat() 因链接断开而失败,因此提供了 lstat 来解决问题。

感谢大家的帮助。

于 2012-08-24T10:46:39.590 回答