जीएनयू / लिनक्स पर, दो मोड हमेशा एक ही परिणाम उत्पन्न करते हैं
हाँ, स्पष्ट रूप से। से man md5sum
:
नोट: [sic] GNU सिस्टम पर बाइनरी और टेक्स्ट मोड विकल्प के बीच कोई अंतर नहीं है।
यह md5sum
जीएनयू कोर्यूटिल्स 8.21 वाले जहाजों के कार्यान्वयन से है ; मुझे लगता है कि पुराने संस्करण (8.12) में यह नोटिस नहीं है लेकिन मुझे लगता है कि वैसे भी सच होगा।
हालांकि AFAICT md5sum
आधिकारिक तौर पर मानकीकृत नहीं है (उदाहरण के लिए, POSIX द्वारा), यह विभिन्न कार्यान्वयनों में विभिन्न प्लेटफार्मों पर उपलब्ध है और स्पष्ट रूप से सिस्टम के उपयोग में आसानी के लिए एक दूसरे के साथ इन अनुपालन को बनाने के लिए कुछ प्रयास है।
इसके संबंध में, आईएसओ / एएनएसआई सी स्टैंडर्ड में फाइलों तक पहुंचने के लिए उच्च स्तरीय स्ट्रीम फ़ंक्शन शामिल हैं। मानक के भाग के रूप में, ये किसी भी ऑपरेटिंग सिस्टम पर उपलब्ध होते हैं जो साझा पुस्तकालय या कंपाइलर के माध्यम से आईएसओ सी को लागू करता है। चूंकि बहुत अधिक सभी ऑपरेटिंग सिस्टम में यह उपलब्ध है (और स्वयं को सबसे अधिक बार C में लिखा गया है), यह एक प्रकार की सार्वभौमिक भाषा है जिसका उपयोग संभवतः बहुत पोर्टेबल सॉफ्टवेयर को लागू करने के लिए किया जाता है।
यह देखते हुए कि यह क्या करता है, यह पूरी तरह से संभव md5sum
होगा कि वह किसी भी ऑपरेटिंग सिस्टम पर संकलन और काम करे। मैं यह दावा नहीं कर रहा हूं कि यह GNU कोरुटिल्स संस्करण के बारे में सही है, लेकिन पहले बताई गई उच्च स्तरीय फाइल स्ट्रीम फ़ंक्शन में से एक है fopen()
, जिसे आईएसओ सी द्वारा अनिवार्य किया गया है ताकि b
यह इंगित करने के लिए फ़ाइल खोलने के लिए उपयोग किए जाने वाले स्विच को शामिल किया जा सके "बाइनरी के रूप में" फ़ाइल "। सिस्टम के लिए इसका मतलब या आवश्यकता नहीं हो सकती है , यह मानक द्वारा निर्धारित नहीं है , बस इसे अस्तित्व में रखने की आवश्यकता है, इसलिए इसका उपयोग सिस्टम पर किया जा सकता है जहां इसके लिए कुछ ( कोई ) कारण हो सकता है।
Linux / POSIX / * nix-style ऑपरेटिंग सिस्टम पर ऐसा कोई कारण नहीं है, इसलिए स्विच कुछ भी नहीं करता है। POSIX कल्पना से (आईएसओ सी का एक सुपरसेट) fopen () के लिए :
चरित्र 'बी' का कोई प्रभाव नहीं होगा, लेकिन आईएसओ सी मानक अनुरूपता के लिए अनुमति है।
इसलिए, एक पूरी तरह से पोर्टेबल md5sum
कार्यान्वयन आईएसओ उच्च स्तर की फाइल स्ट्रीम फ़ंक्शन का उपयोग कर सकता है, क्योंकि आईएसओ सी में फ़ाइलों तक पहुंचने के लिए कोई अन्य विधियां नहीं हैं (अधिकांश प्लेटफॉर्म, जिनमें पोसिक्स शिकायत वाले भी शामिल हैं, अपने स्वयं के निचले स्तर के तरीके भी हैं, लेकिन इनका उपयोग कर सकते हैं। क्योंकि वे आईएसओ सी में नहीं हैं नहीं पोर्टेबल होना), और यह भी लागू करना चाहिए -b
और -t
झंडे को जोड़ने या नहीं जोड़ने के लिए b
करने के लिए विकल्प fopen()
जब यह फ़ाइल पढ़ता है। उन प्रणालियों पर जहां यह अर्थहीन है, इससे कोई फर्क नहीं पड़ेगा।
फिर से, मैं यह नहीं कह रहा हूँ कि GNU के md5sum को पूरी तरह से पोर्टेबल तरीके से लिखा गया है या एक से प्राप्त किया गया है, लेकिन जाहिर है कि यह एक के साथ, अपनी संचालन क्षमता में, पालन करने की कोशिश कर रहा है। ध्यान दें कि एक ध्वज जिसके पास कुछ भी नहीं है वह ध्वज के समान नहीं है - पूर्व मामले में, यह ठीक है लेकिन कुछ भी नहीं करने के लिए निर्दिष्ट है, जबकि बाद के मामले में इसका उपयोग करने में त्रुटि हो सकती है या अपरिभाषित व्यवहार हो सकता है। ।