답변:
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 규격 (ISO C의 상위 집합)에서 ()는 fopen :
문자 'b'는 영향을 미치지 않지만 ISO C 표준 준수에 허용됩니다.
따라서 md5sum
ISO C에서 파일에 액세스하는 다른 방법이 없기 때문에 완전히 이식 가능한 구현은 ISO 고급 파일 스트림 기능을 사용할 수 있습니다 (POSIX 불만 사항을 포함한 대부분의 플랫폼에는 자체 저수준 방법도 있지만 이러한 기능을 사용하면 ISO C에 있지 않기 때문에 이식 가능 하지 않으며 파일을 읽을 때 옵션을 추가하거나 추가하지 않도록 -b
and -t
플래그를 구현해야 합니다. 의미가없는 시스템에서는 아무런 차이가 없습니다.b
fopen()
다시 말하지만, GNU의 md5sum이 완전히 이식 가능한 방식으로 작성되었거나 작동 방식에서 파생 된 방식으로 파생 된 것은 아닙니다. 아무것도하지 않는 플래그를 갖는 것은 플래그를 갖는 것과 같지 않습니다. 전자의 경우 괜찮아 지도록 지정되었지만 아무것도하지 않는 반면, 나중에 사용하는 경우 오류가 발생하거나 정의되지 않은 동작이 발생할 수 있습니다 .