บน GNU / Linux ทั้งสองโหมดจะให้ผลลัพธ์เหมือนกันเสมอ
ใช่อย่างชัดเจน จากman md5sum
:
หมายเหตุ:ไม่มีความแตกต่างระหว่างตัวเลือกไบนารีและโหมดข้อความในระบบ [sic] GNU
นี่คือจากการmd5sum
ใช้งานที่มาพร้อมกับ GNU coreutils 8.21; ฉันสังเกตเห็นว่ารุ่นที่เก่ากว่า (8.12) ไม่มีการแจ้งเตือนนี้ แต่ฉันคิดว่าเหมือนกันจะเป็นจริงอยู่ดี
แม้ว่า AFAICT md5sum
จะไม่ได้มาตรฐานอย่างเป็นทางการ (เช่นโดย POSIX) แต่ก็มีอยู่ในแพลตฟอร์มต่าง ๆ ในการนำไปใช้งานที่หลากหลายและมีความพยายามอย่างชัดเจนที่จะทำให้สอดคล้องกับสิ่งเหล่านี้เพื่อความสะดวกในการใช้งานข้ามระบบ
ในความสัมพันธ์กับสิ่งนี้มาตรฐาน ISO / ANSI Cรวมถึงฟังก์ชั่นสตรีมระดับสูงสำหรับการเข้าถึงไฟล์ ในฐานะส่วนหนึ่งของมาตรฐานสิ่งเหล่านี้จะมีอยู่ในระบบปฏิบัติการใด ๆ ที่ใช้ ISO C ผ่านทางไลบรารี่ที่แชร์หรือคอมไพเลอร์ เนื่องจากระบบปฏิบัติการทั้งหมดมีให้ใช้งานได้ (และมักเขียนด้วยภาษา C) จึงเป็นภาษาสากลที่ใช้ในการพัฒนาซอฟต์แวร์พกพาที่อาจเป็นไปได้
เมื่อพิจารณาถึงสิ่งที่ทำมันจะเป็นไปได้โดยสิ้นเชิงที่จะเขียนสิ่งmd5sum
ที่จะรวบรวมและทำงานบนระบบปฏิบัติการใด ๆ ฉันไม่ได้อ้างว่านี่เป็นความจริงของ GNU coreutils แต่หนึ่งในฟังก์ชั่นสตรีมไฟล์ระดับสูงที่กล่าวถึงก่อนหน้านี้คือfopen()
ISO C ซึ่งได้รับคำสั่งให้รวมb
สวิตช์ที่ใช้ในการเปิดไฟล์เพื่อระบุว่ามันถูกเปิด "เป็นไบนารี ไฟล์". สิ่งที่อาจหมายถึงหรือต้องของระบบไม่ได้ถูกกำหนดโดยมาตรฐานก็เพียงที่จำเป็นในการมีชีวิตอยู่เพื่อที่จะสามารถนำมาใช้ในระบบที่อาจจะมีบางคน ( ใด ๆ ) เหตุผลสำหรับมัน
ไม่มีเหตุผลดังกล่าวในระบบปฏิบัติการสไตล์ linux / POSIX / * nix ดังนั้นสวิตช์จึงไม่ทำสิ่งใด จากข้อมูลจำเพาะ POSIX (superset ของ ISO C) สำหรับfopen () :
อักขระ 'b' จะไม่มีผลกระทบ แต่ได้รับอนุญาตให้สอดคล้องกับมาตรฐาน ISO C
ดังนั้นการmd5sum
ใช้งานแบบพกพาอย่างสมบูรณ์อาจใช้ฟังก์ชั่นสตรีมไฟล์ ISO ระดับสูงเนื่องจากไม่มีวิธีอื่นสำหรับการเข้าถึงไฟล์ใน ISO C (แพลตฟอร์มส่วนใหญ่รวมถึง POSIX ร้องเรียน) มีวิธีการระดับล่างของตัวเองเช่นกัน ไม่สามารถพกพาได้เนื่องจากไม่ได้อยู่ใน ISO C) และควรใช้-b
และติด-t
ธงและเพื่อเพิ่มหรือไม่เพิ่มb
ตัวเลือกfopen()
เมื่ออ่านไฟล์ สำหรับระบบที่ไม่มีความหมายมันจะไม่สร้างความแตกต่างใด ๆ
อีกครั้งฉันไม่ได้บอกว่า md5sum ของ GNU นั้นเขียนด้วยวิธีพกพาอย่างสมบูรณ์หรือมาจากที่กล่าวมา แต่ก็เห็นได้ชัดว่ามันพยายามที่จะปฏิบัติตาม โปรดทราบว่าการมีการตั้งค่าสถานะซึ่งไม่มีอะไรไม่เหมือนกับการไม่มีการตั้งค่าสถานะ - ในกรณีก่อนหน้านี้ถูกระบุว่าไม่เป็นไร แต่ไม่ทำอะไรเลยในขณะที่การใช้งานในภายหลังอาจเป็นข้อผิดพลาดหรือนำไปสู่พฤติกรรมที่ไม่ได้กำหนด .