2012-08-23 18 views
7

Trong linux, khi stat() được sử dụng với các tệp liên kết bị hỏng, nó không thành công với -1. Vì vậy, tôi đã sử dụng lstat() đã thành công.lstat() thay thế trong cửa sổ là gì?

Đối với trường hợp tương tự trong cửa sổ, _stat() không thành công với phím tắt bị hỏng, nhưng không có _lstat() trong cửa sổ. Vui lòng giúp tìm cách thay thế cho lstat() trong cửa sổ.

Trả lời

7

GetFileAttributes hoặc GetFileAttributesEx có thể (nếu tôi hiểu statlstat bên phải). Trích dẫn từ tài liệu:

Hành vi liên kết tượng trưng — Nếu đường dẫn trỏ đến liên kết tượng trưng, ​​hàm sẽ trả về thuộc tính cho liên kết tượng trưng.

+0

thanks a lot .. hãy để tôi thử và kiểm tra –

3

hey _stat() hoặc stat() cũng hoạt động tốt trên các phím tắt bị hỏng. Thats lý do, không có thay thế như lstat (UNIX) trong cửa sổ.

Trong trường hợp trong Unix, stat() không thành công với các liên kết bị hỏng, vì vậy lstat được cung cấp để khắc phục sự cố.

Cảm ơn tất cả vì sự giúp đỡ của bạn.

+0

Tôi giả sử các câu hỏi, và câu trả lời này, đã được thực hiện trong bối cảnh của thư viện thời gian chạy MSVC không? Bất kể, vì đã đăng câu trả lời này vì nó đã cứu tôi khỏi việc tự hỏi tại sao ai đó lại gặp rắc rối khi tạo một '_stat()' theo các phím tắt, nhưng không tạo ra '_lstat()' mà không làm như vậy với nó. Ý tôi là, trước đây là một công việc * nhiều * nữa, đến mức mà bất cứ ai đủ thông minh để làm điều đó cần phải có nhiều thời gian trong quá trình để nhận ra rằng họ đang làm cho thứ hai cần thiết nữa. – SamB

6

Câu trả lời được chấp nhận không cung cấp đầy đủ stat tương đương. Các stat struct được định nghĩa là

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 */ 
      }; 

nhưng GetFileAttributes.. không cung cấp bất kỳ thông tin chủ sở hữu (nó sẽ trả về dữ liệu trong một đối tượng WIN32_FIND_DATA). Nếu bạn cần thông tin về chủ sở hữu đó, có vẻ như bạn có thể sử dụng GetSecurityInfo [1].

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