Thursday 15 August 2013

Determining if two file paths point to same file under Linux / C? -


लिनक्स के अंतर्गत, मेरे पास दो फ़ाइल पथ हैं A और B:

  const char * A = ...; Const char * B = ...;   

अब मैं यह निर्धारित करना चाहता हूं, क्या मुझे open (2) दोनों चाहिए ...

  int fda = open ( ए, ...); Int fdb = ओपन (बी, ...);   

... क्या मैं फाइलसिस्टम में एक ही फाइल के लिए दो फाइलहेन्डल खोल सकता हूं?

इसे निर्धारित करने के लिए मैं stat (2) : <पूर्व> संरचना स्टेट {dev_t st_dev; Ino_t st_ino; (छद्म कोड):

  bool isSameFile (const char * sA, const char * sB) {stat A = स्टेट (एसए); स्टेट बी = स्टेट (एसबी); वापसी एस्ट_डेव == बीस्ट_डेवी & amp; amp; एस्ट_इनो == बीस्ट_नो; }   

क्या ऐसा कोई भी मामला है जहां ए और बी एक ही फाइल हैं लेकिन IsSameFile झूठी बदलेगी?

क्या कोई ऐसा मामला है जहां ए और बी अलग-अलग फाइल हैं, लेकिन IsSameFile सच वापस आएगा?

क्या मैं करने की कोशिश कर रहा हूँ करने का एक बेहतर तरीका है?

आपका प्रोग्राम सभी मामलों में ठीक काम करेगा क्योंकि एस्ट_िनो इनोड नंबर आपके सिस्टम में फाइल की चूंकि आइनोड नंबर अद्वितीय है आपका प्रोग्राम सही ढंग से पहचान करेगा कि क्या दो फाइल्स खोली गई हैं या नहीं।

आप फ़ाइल प्रतीकात्मक लिंक है या नहीं यह जानने के लिए एस्ट_मोड के मान भी देख सकते हैं।

No comments:

Post a Comment