리눅스 파일타입판별하는법

jmk101711의 이미지

리눅스 환경에서 파일타입(확장자)를 판별하는 프로그램을 만들려 하는데 예를 들어 사진파일이면 jpeg이라 나오도록 만들려는데 방법이 잘 안떠오르네요.. 도와주실수 있나요?

라스코니의 이미지

파일 이름이 xxx.yyy.zzz.jpeg 라면 마지막 . (dot)을 찾아서 jpeg를 읽어내면 됩니다.
마지막 문자를 어떤 문자열에서 찾는 함수는 strrchr() 입니다.

요약.
1. 파일 이름을 읽는다.
2. 파일 이름 문자열에서 마지막 .(dot) 지점을 찾는다.
3. 그 다음 지점부터 문자열 끝까지가 파일 확장자이다.

익명 사용자의 이미지

얼마나 정확하게, 얼마나 구체적으로 파악하고 싶은지에 따라 달라지겠지요.

이 분야의 선배인 file 명령어를 참고하는 것도 좋겠습니다.

https://www.man7.org/linux/man-pages/man1/file.1.html

김정균의 이미지

file 은 libmagic 이라는 라이브러리 패키지에서 제공하는 실행 명령입니다.
c 또는 c++ 로 만드시는 것이라면, libmagic library 를 이용하시는 것도 한 방법 입니다.

또는 분석을 위한 포맷의 정의를 파악해서 직접 만들 수도 있겠죠. 예를 들어, jpg, png, gif 를 판단하는 경우는 https://svn.oops.org/wsvn/OOPS.libimginfo/trunk/src/imginfo.c 의 check_image_type 함수를 보시면 됩니다. 이런식으로 spec 파일(jpg, png, gif 등은 rfc 문서를 보시면 됩니다.) 분석해서 해당 포맷의 spec 을 이용하는 방법이 있겠죠.