2010-01-05 19 views
6

यूनिक्स सिम्लिंक पर पॉइंटर्स दूसरी फ़ाइल में हैं। न केवल फाइल बल्कि सिम्लिंक में एक सीटा, माटा, ... है। मुझे पता है कि सिम्लिंक समय का उपयोग किया जा सकता है, क्योंकि ls इसे प्रदर्शित करता है। अगर मैं रूबी के File#ctime, File#mtime में से एक का उपयोग करता हूं, ..., मुझे हमेशा सिमलिंक की ओर इशारा करते हुए फ़ाइल की विशेषता मिलती है, सिमलिंक की नहीं। मैं इस मूल्य को रूबी में कैसे पढ़ सकता हूं? यदि यह रूबी में संभव नहीं है, तो मुझे बताएं कि सी में इसे कैसे किया जाए। मैं उस मामले में अपना स्वयं का सी एक्सटेंशन लिखूंगा।एक प्रतीकात्मक लिंक के ctime, mtime, ... को कैसे प्राप्त करें?

उत्तर

10

File#lstat() का उपयोग करें। उदाहरण:

# This is a dummy symlink; there's no file named "foo". 
ln -s foo bar 

# Run irb. 
irb(main):001:0> File.lstat("bar") 
=> #<File::Stat dev=0x801, ino=90113, mode=0120777, nlink=1, uid=1000, gid=1000, rdev=0x0, size=3, blksize=4096, blocks=0, atime=2010-01-05 17:59:06 -0500, mtime=2010-01-05 17:59:05 -0500, ctime=2010-01-05 17:59:05 -0500> 

# Get the mtime of the link. 
irb(main):002:0> File.lstat("bar").mtime 
=> 2010-01-05 17:59:05 -0500 
1

lstat() सी में ऐसा कर सकता है; यकीन नहीं है कि रूबी बराबर है या नहीं।

+0

रूबी में 'file.lstat' प्रतीत होता है, जो वही करता है। – johannes

1

वहाँ रहे हैं न केवल सिमलिंक की विशेषताओं और अंतिम लक्ष्य की विशेषताओं, लेकिन यह भी, सिमलिंक एक और सिमलिंक, एक या अधिक मध्यवर्ती कदम ही है अगर; सभी विशेषताओं को प्राप्त करने के लिए, आपको रीडलिंक पाश में lstats करने की आवश्यकता होगी।

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