[C] chdir , _chdir , SetCurrentDirectory

spring·2020년 11월 9일
0

chdir , _chdir , SetCurrentDirectory 모두 현재 프로세스의 작업 디렉토리를 변경하는 함수이다.

이 함수들은 MSVC 에서 정의 되는데, 우선 차이점 부터 알아 보자면

chdir : 한글경로 인식불가, 상대경로 인식가능
_chdir : 한글경로 인식불가, 상대경로 인식가능
SetCurrentDirectoryA : 한글경로 인식가능, 상대경로 인식가능

chdir_chdir 은 동작 방식에 있어서는 차이가 없다. 모두 한글경로를 인식하지 못한다. 다만 이 함수들의 wide-char 버전인 wchdir_wchdir 함수는 한글 경로를 인식 한다.

반면 SetCurrentDirectoryA 는 모든 경로를 지원한다. 인수만 ANSI-String 일 뿐 한글 경로도 지원한다.

결론은 MSVC 환경에서는 SetCurrentDirectory 함수를 사용해야 속이 편하다.

Linux 환경에서는 chdir 밖에 없고, 한글경로와 상대경로를 모두 지원한다.

크로스 플랫폼 코드를 고려하고 있다면, 한글 경로 때문에 생기는 문제를 피하기 위해 chdir 로 통일하는 일은 없도록 하자.

여담이지만, MSVC 에서는 POXIS 스타일의 함수는 웬만 하면 피하는게 좋을듯 하다.

profile
Researcher & Developer @ NAVER Corp | Designer @ HONGIK Univ.

1개의 댓글

comment-user-thumbnail
2022년 10월 26일

링크해갑니다~

답글 달기