How to use Erlang file:read_file_info permissions/mode info? -


फ़ाइल के लिए एर्लंग डॉक्स: read_file_info / 1 राज्य "फ़ाइल अनुमतियाँ [हैं] योग" और "अन्य बिट्स ... सेट हो सकते हैं", आत्मविश्वास बढ़ाने नहीं। और, Google मेरा मित्र यहाँ नहीं है।

मैं फ़ाइल: read_file_info / 1 , द्वारा दिया गया विधा वापस लेना चाहता हूं, उदा। लिनक्स मशीन पर 33188 , और इसे अधिक मानव पठनीय और / या पहचानने योग्य, जैसे rw-r-r - या 644

कोई भी युक्तियां, लिंक या दिशाएं काफी सराहा गई हैं।

छोटा जिस तरह से:

  io_lib: प्रारूप ("~ .8 B", [मोड])।   

... या:

  io_lib: प्रारूप ("~ .8 बी", [मोड बैंड 8 # 777])।  मोड = 33204  के लिए ये दो आपको क्रमशः देगा:  ["100664"]  और  ["664"]  

लंबा रास्ता:

  प्रिंट (मोड) - & gt; प्रिंट (मोड बैंड 8 # 777, [])। प्रिंट (0, एसीसी) जब लंबाई (एसीसी) =: = 9 - & gt; एसीसी; प्रिंट (एन, एसीसी) - & gt; चार = पर्म (एन बैंड 1, लंबाई (एसीसी) रिम 3), प्रिंट (एन बीएसआर 1, [चार | एसीसी])। पर्म (0, _) - & gt; $ -; पर्म (1, 0) - & gt; $ X; पर्म (1, 1) - & gt; $ W; पर्म (1, 2) - & gt; $ आर।  मोड = 33204  के लिए यह एक (फ़ंक्शन  print / 1 ) आपको परिणाम के रूप में देगा:  "rw- Rw-r - " 

अगर कुछ एक के लिए अस्पष्ट था, तो मैं जो स्निपेट प्रदान कर चुका हूं, उसके पीछे मूल चीजों को स्पष्ट करने की कोशिश करूंगा।

जैसा कि @ मैसिंंटस पहले से ही उल्लेख किया है, वस्तुतः 33204 वास्तव में ऑक्टल नंबर 100664 का दशमलव प्रतिनिधित्व है। ये तीन न्यूनतम आक्टिकल अंक ( 664 ) शायद आपको क्या चाहिए, और इसलिए हम उन्हें बिटवर्ड और ( बैंड ) ऑपरेशन को सर्वोच्च संख्या से प्राप्त करते हैं जो तीन अष्टक अंकों ( 8 # 777 ) में फिट बैठता है। यही कारण है कि छोटी रास्ता इतनी छोटी है - आप केवल एर्लांग को मोड को स्ट्रिंग में कनवर्ट करने के लिए कहें, जैसे कि यह अष्टक संख्या है।

दूसरा उल्लेख आपके द्वारा उल्लिखित है (जैसे आरवाई-आरडब्ल्यू-आर - , एलएस बाहर निकलता है) मोड नंबर के द्विआधारी प्रतिनिधित्व से आसानी से प्रतिलिपि प्रस्तुत करता है। ध्यान दें कि तीन अष्टक अंक आपको बिल्कुल नौ बाइनरी अंक ( 8 # 644 = 2 # 110110100 ) देगा। वास्तव में यह स्ट्रिंग rwxrwxrwx है जहां प्रत्येक तत्व को - द्वारा बदल दिया जाता है, यदि संबंधित अंकों के बराबर 0 । यदि अंक है 1 तत्व अछूता रहता है।

इसलिए इसे हासिल करने के लिए थोड़ा क्लीनर दृष्टिकोण है:

  प्रिंट (मोड) - & gt; प्रिंट (मोड बैंड 8 # 777, सूचियां: रिवर्स ("आरडब्ल्यूएक्सआरवॉक्सेडव्यूक्स"), [])। प्रिंट (0, [], एसीसी) - & gt; एसीसी; प्रिंट (एन, [चार 0 | शेष], एसीसी) - & gt; चार = चार (एन बैंड 1, चार 0), प्रिंट (एन बीएसआर 1, शेष, [चार | एसीसी])। चार (0, _) - & gt; $ -; चार (1, सी) - & gt; सी।   

मुझे आशा है कि आपको अंक मिल जाएगा। वैसे भी यदि आप संदेह में टिप्पणी में किसी भी सवाल पूछने के लिए स्वतंत्र महसूस करें।

Comments

Popular posts from this blog

java - NullPointerException for a 2d Array -

python - Assemble mpeg file unable to play in mediaplayer -

c# - NameSpace Manager or XsltContent to parse aspx page -