2012-08-23 8 views
7

लिनक्स में, जब stat() टूटी हुई लिंक फ़ाइलों के साथ प्रयोग किया जाता है, तो यह -1 के साथ विफल रहता है। इसलिए मैंने lstat() का उपयोग किया जो सफल हुआ।विंडोज़ में lstat() विकल्प क्या है?

विंडोज़ में उसी मामले के लिए, _stat() टूटे शॉर्टकट के साथ विफल रहता है, लेकिन विंडोज़ में _lstat() नहीं है। विंडोज़ में lstat() के लिए विकल्प खोजने में मदद करें।

उत्तर

7

GetFileAttributes या GetFileAttributesEx शायद (अगर मुझे stat और lstat सही समझा गया)। दस्तावेज़ों से उद्धरण:

प्रतीकात्मक लिंक व्यवहार- यदि पथ एक प्रतीकात्मक लिंक को इंगित करता है, तो फ़ंक्शन प्रतीकात्मक लिंक के लिए गुण देता है।

+0

बहुत बहुत शुक्रिया .. मुझे कोशिश करते हैं और –

3

हे _stat() या stat() टूटा शॉर्टकट पर भी ठीक काम करता है। कारण बताता है, विंडोज़ में lstat (यूनिक्स) जैसे कोई विकल्प नहीं है।

यूनिक्स में, stat() टूटी हुई लिंक के साथ विफल रहता है, इसलिए समस्या को ठीक करने के लिए lstat प्रदान किया जाता है।

आपकी मदद के लिए सभी को धन्यवाद।

+0

जाँच मैं सवाल है, और इस सवाल का जवाब मान, MSVC के क्रम पुस्तकालय के संदर्भ में किए गए थे हैं? भले ही, इस उत्तर को पोस्ट करने के लिए धन्यवाद क्योंकि यह मुझे सोचने से बचाता है कि क्यों कोई भी '_stat() 'बनाने की परेशानी के लिए किसी शॉर्टकट का पालन करता है, लेकिन' _lstat()' नहीं करता है जो ऐसा करने के लिए ऐसा नहीं करता है इसके साथ। मेरा मतलब है, पूर्व एक * बहुत * अधिक काम है, उस बिंदु पर जहां कोई भी ऐसा करने के लिए पर्याप्त स्मार्ट होना चाहिए, यह समझने के लिए पर्याप्त समय होना चाहिए कि वे बाद के आवश्यक भी बना रहे हैं। – SamB

6

स्वीकृत उत्तर एक पूर्ण stat समतुल्य प्रदान नहीं करता है। 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

संबंधित मुद्दे