在 linux 中,当stat()
与断开的链接文件一起使用时,它会以-1
. 所以我用lstat()
了哪个成功了。
对于 windows 中的相同情况,_stat()
由于快捷方式损坏而失败,但_lstat()
windows 中没有。请帮助lstat()
在 Windows 中找到替代方案。
接受的答案没有提供完整的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 来解决问题。
感谢大家的帮助。