msvcrt — MS VC++ 런타임의 유용한 루틴들
msvcrt — MS VC++ 런타임의 유용한 루틴들
msvcrt 모듈은 Windows 플랫폼에서 유용한 몇 가지 기능에 접근할 수 있게 해주는 함수들을 제공해요. 일부 상위 레벨 모듈이 이 함수들을 이용해 Windows 구현을 만들기도 해요. 예를 들어 getpass 모듈은 getpass() 함수를 구현할 때 이 모듈을 사용해요.
본문
이 함수들에 대한 더 자세한 문서는 Platform API 문서에서 찾을 수 있어요.
이 모듈은 콘솔 I/O API의 일반(normal) 및 와이드 문자(wide char) 변형을 모두 구현해요. 일반 API는 ASCII 문자만 다루며 국제화된 애플리케이션에는 사용에 한계가 있어요. 가능하면 와이드 문자 API를 사용하는 게 좋아요.
버전 3.3부터 이 모듈의 연산들은 IOError 대신 OSError 를 발생시켜요.
파일 연산 (File Operations)
- msvcrt.locking(fd, mode, nbytes) — C 런타임의 파일 디스크립터 fd 를 기준으로 파일 일부를 잠가요. 실패하면
OSError를 발생시켜요. 잠긴 영역은 현재 파일 위치부터 nbytes 바이트까지이며 파일 끝을 넘어갈 수도 있어요. mode 는 아래 나열된LK_*상수 중 하나여야 해요. 한 파일의 여러 영역을 동시에 잠글 수 있지만 겹칠 수는 없어요. 인접한 영역은 병합되지 않으며 각각 따로 잠금 해제해야 해요.msvcrt.locking감사(auditing) 이벤트를 인자fd,mode,nbytes로 발생시켜요.
- msvcrt.LK_LOCK, msvcrt.LK_RLCK — 지정한 바이트를 잠가요. 잠글 수 없으면 1초 후 다시 시도하고, 10번 시도 후에도 실패하면
OSError를 발생시켜요. - msvcrt.LK_NBLCK, msvcrt.LK_NBRLCK — 지정한 바이트를 잠가요. 잠글 수 없으면 즉시
OSError를 발생시켜요. - msvcrt.LK_UNLCK — 이전에 잠겼던 지정 바이트의 잠금을 해제해요.
- msvcrt.setmode(fd, flags) — 파일 디스크립터 fd 의 줄바꿈 변환 모드를 설정해요. 텍스트 모드로 설정하려면 flags 를
os.O_TEXT로, 바이너리 모드로는os.O_BINARY로 지정해요. - msvcrt.open_osfhandle(handle, flags) — 파일 핸들 handle 로부터 C 런타임 파일 디스크립터를 만들어요. flags 는
os.O_APPEND,os.O_RDONLY,os.O_TEXT,os.O_NOINHERIT의 비트 OR 값이어야 해요. 반환된 파일 디스크립터는os.fdopen()의 인자로 사용해 파일 객체를 만들 수 있어요. 기본적으로 파일 디스크립터는 상속 가능하며,os.O_NOINHERIT플래그를 넘기면 상속 불가능하게 돼요.msvcrt.open_osfhandle감사 이벤트를 인자handle,flags로 발생시켜요. - msvcrt.get_osfhandle(fd) — 파일 디스크립터 fd 의 파일 핸들을 반환해요. fd 를 인식하지 못하면
OSError를 발생시켜요.msvcrt.get_osfhandle감사 이벤트를 인자fd로 발생시켜요.
콘솔 I/O
- msvcrt.kbhit() — 읽을 키 입력이 대기 중이면 0이 아닌 값을, 그렇지 않으면 0을 반환해요.
- msvcrt.getch() — 키 입력을 읽고 결과 문자를 바이트 문자열로 반환해요. 콘솔에 에코되지 않아요. 입력이 없으면 블록되지만 Enter 를 기다리지는 않아요. 특수 기능 키를 누르면
'\000'또는'\xe0'를 반환하고 다음 호출에서 키코드를 반환해요. Control-C 는 이 함수로 읽을 수 없어요. - msvcrt.getwch() —
getch()의 와이드 문자 변형으로 Unicode 값을 반환해요. - msvcrt.getche() —
getch()와 유사하지만 인쇄 가능한 문자면 키 입력을 에코해요. - msvcrt.getwche() —
getche()의 와이드 문자 변형이에요. - msvcrt.putch(char) — 바이트 문자열 char 를 버퍼링 없이 콘솔에 출력해요.
- msvcrt.putwch(unicode_char) —
putch()의 와이드 문자 변형으로 Unicode 값을 받아요. - msvcrt.ungetch(char) — 바이트 문자열 char 를 콘솔 버퍼로 다시 밀어 넣어요. 다음
getch()또는getche()가 이 문자를 읽게 돼요. - msvcrt.ungetwch(unicode_char) —
ungetch()의 와이드 문자 변형이에요.
기타 함수 (Other Functions)
- msvcrt.heapmin() —
malloc()힙이 스스로 정리하고 사용하지 않는 블록을 운영체제에 반환하도록 강제해요. 실패하면OSError를 발생시켜요. - msvcrt.set_error_mode(mode) — 프로그램을 끝낼 수 있는 오류에 대해 C 런타임이 오류 메시지를 쓰는 위치를 변경해요. mode 는 아래
OUT_*상수 중 하나 또는REPORT_ERRMODE여야 해요. 이전 설정을 반환하며 오류가 있으면 -1 을 반환해요. 디버그 빌드에서만 사용 가능해요. - msvcrt.OUT_TO_DEFAULT — 앱 종류에 따라 오류 출력 대상이 결정돼요. 디버그 빌드 전용.
- msvcrt.OUT_TO_STDERR — 오류 출력 대상이 표준 오류예요. 디버그 빌드 전용.
- msvcrt.OUT_TO_MSGBOX — 오류 출력 대상이 메시지 박스예요. 디버그 빌드 전용.
- msvcrt.REPORT_ERRMODE — 현재 오류 모드 값을 보고해요. 디버그 빌드 전용.
- msvcrt.CrtSetReportMode(type, mode) — MS VC++ 런타임의
_CrtDbgReport()가 생성하는 특정 보고 유형의 대상을 지정해요. type 은 아래CRT_*상수 중 하나, mode 는 아래CRTDBG_*상수 중 하나여야 해요. 디버그 빌드 전용. - msvcrt.CrtSetReportFile(type, file) —
CrtSetReportMode()로CRTDBG_MODE_FILE을 지정한 뒤, 메시지 텍스트를 받을 파일 핸들을 지정할 수 있어요. type 은CRT_*상수 중 하나, file 은 지정할 파일 핸들이에요. 디버그 빌드 전용. - msvcrt.CRT_WARN — 즉시 주의가 필요하지 않은 경고·메시지·정보예요.
- msvcrt.CRT_ERROR — 즉시 주의가 필요한 오류·복구 불가 문제예요.
- msvcrt.CRT_ASSERT — 단언(assertion) 실패예요.
- msvcrt.CRTDBG_MODE_DEBUG — 메시지를 디버거 출력 창에 써요.
- msvcrt.CRTDBG_MODE_FILE — 사용자가 제공한 파일 핸들에 메시지를 써요. 대상 파일·스트림을 지정하려면
CrtSetReportFile()을 호출해야 해요. - msvcrt.CRTDBG_MODE_WNDW —
Abort,Retry,Ignore버튼과 함께 메시지를 표시하는 메시지 박스를 만들어요. - msvcrt.CRTDBG_REPORT_MODE — 지정한 type 의 현재 mode 를 반환해요.
- msvcrt.CRT_ASSEMBLY_VERSION —
crtassem.h헤더 파일의 CRT 어셈블리 버전이에요. - msvcrt.VC_ASSEMBLY_PUBLICKEYTOKEN —
crtassem.h파일의 VC 어셈블리 공개 키 토큰이에요. - msvcrt.LIBRARIES_ASSEMBLY_NAME_PREFIX —
crtassem.h파일의 라이브러리 어셈블리 이름 접두사예요.