【发布时间】:2012-08-18 14:56:29
【问题描述】:
在 linux 中,当 stat() 与损坏的链接文件一起使用时,它会以 -1 失败。所以我用lstat() 成功了。
对于 Windows 中的相同情况,_stat() 因快捷方式损坏而失败,但 Windows 中没有 _lstat()。请帮助在 Windows 中找到 lstat() 的替代方案。
【问题讨论】:
在 linux 中,当 stat() 与损坏的链接文件一起使用时,它会以 -1 失败。所以我用lstat() 成功了。
对于 Windows 中的相同情况,_stat() 因快捷方式损坏而失败,但 Windows 中没有 _lstat()。请帮助在 Windows 中找到 lstat() 的替代方案。
【问题讨论】:
接受的答案未提供完整的 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
【讨论】:
GetFileAttributes 或 GetFileAttributesEx 可能(如果我理解 stat 和 lstat 对)。引用文档:
符号链接行为——如果路径指向符号链接,函数返回符号链接的属性。
【讨论】:
嘿 _stat() 或 stat() 也适用于损坏的快捷方式。这就是原因,在windows中没有像lstat(UNIX)这样的替代品。
在 Unix 中,stat() 因链接断开而失败,因此提供了 lstat 来解决问题。
感谢大家的帮助。
【讨论】:
_stat(),而不是制作一个不这样做的_lstat()。我的意思是,前者需要很多工作,以至于任何足够聪明的人都应该在这个过程中有足够的时间来意识到他们也让后者变得必要。