msvcrt — MS VC++ 런타임의 유용한 루틴

msvcrt — MS VC++ 런타임의 유용한 루틴

이 함수들은 Windows 플랫폼에서 유용한 여러 기능에 접근을 제공해요. 일부 고수준 모듈이 서비스의 Windows 구현을 만드는 데 이 함수들을 사용해요. 예를 들어 getpass 모듈은 getpass() 함수 구현에서 이걸 사용해요. 이 함수들에 대한 추가 문서는 Platform API 문서에서 찾을 수 있어요.

모듈은 콘솔 I/O API의 normal과 wide char 변형을 모두 구현해요. normal API는 ASCII 문자만 다루고 국제화된 애플리케이션에는 용도가 제한적이에요. 가능하면 어디서든 wide char API를 사용해야 해요.

사용 가능: Windows에서만.

버전 3.3에서 변경: 이 모듈의 연산이 이제 IOError가 발생하던 곳에서 OSError를 발생시킴.

출처: Python 표준 라이브러리

본문

파일 연산

msvcrt.locking(fd, mode, nbytes)

C 런타임의 파일 디스크립터 fd를 기반으로 파일 일부를 잠가요. 실패하면 OSError를 발생시켜요. 잠긴 파일 영역은 현재 파일 위치부터 nbytes 바이트까지 뻗고, 파일 끝을 넘어 계속될 수 있어요. mode는 아래 나열된 LK_* 상수 중 하나여야 해요. 파일에서 여러 영역을 동시에 잠글 수 있지만 겹칠 수는 없어요. 인접한 영역은 병합되지 않아서 각각 개별적으로 잠금 해제해야 해요. 인자 fd, mode, nbytes로 auditing 이벤트 msvcrt.locking을 발생시켜요.

  • msvcrt.LK_LOCK, msvcrt.LK_RLCK — 지정된 바이트를 잠가요. 바이트를 잠글 수 없으면 프로그램이 1초 후 즉시 다시 시도해요. 10번 시도 후에도 바이트를 잠글 수 없으면 OSError가 발생해요.
  • msvcrt.LK_NBLCK, msvcrt.LK_NBRLCK — 지정된 바이트를 잠가요. 바이트를 잠글 수 없으면 OSError가 발생해요.
  • msvcrt.LK_UNLCK — 지정된 바이트를 잠금 해제해요. 반드시 이전에 잠궈졌어야 해요.

msvcrt.setmode(fd, flags)

파일 디스크립터 fd의 줄 끝 변환 모드를 설정해요. 텍스트 모드로 설정하려면 flagsos.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 플래그를 전달하세요. 인자 handle, flags로 auditing 이벤트 msvcrt.open_osfhandle을 발생시켜요.

msvcrt.get_osfhandle(fd)

파일 디스크립터 fd의 파일 핸들을 돌려줘요. fd를 인식하지 못하면 OSError를 발생시켜요. 인자 fd로 auditing 이벤트 msvcrt.get_osfhandle을 발생시켜요.

콘솔 I/O

msvcrt.kbhit()

읽기를 기다리는 키 입력이 있으면 0이 아닌 값을 돌려줘요. 아니면 0을 돌려줘요.

msvcrt.getch()

키 입력을 읽고 결과 문자를 바이트 문자열로 돌려줘요. 콘솔에 아무것도 에코되지 않아요. 이 호출은 사용 가능한 키 입력이 이미 없으면 블록되지만, Enter가 눌릴 때까지 기다리지는 않아요. 누른 키가 특수 기능 키였다면 '\000' 또는 '\xe0'을 돌려주고, 다음 호출이 키코드를 돌려줘요. Control-C 키 입력은 이 함수로 읽을 수 없어요.

msvcrt.getwch()

getch()의 wide char 변형으로, 유니코드 값을 돌려줘요.

msvcrt.getche()

getch()와 비슷하지만, 인쇄 가능한 문자를 나타내면 키 입력이 에코돼요.

msvcrt.getwche()

getche()의 wide char 변형으로, 유니코드 값을 돌려줘요.

msvcrt.putch(char)

바이트 문자열 char를 버퍼링 없이 콘솔에 출력해요.

msvcrt.putwch(unicode_char)

putch()의 wide char 변형으로, 유니코드 값을 받아요.

msvcrt.ungetch(char)

바이트 문자열 char가 콘솔 버퍼로 "밀려 들어가게" 해요. getch() 또는 getche()가 읽을 다음 문자가 돼요.

msvcrt.ungetwch(unicode_char)

ungetch()의 wide char 변형으로, 유니코드 값을 받아요.

기타 함수

msvcrt.heapmin()

malloc() 힙이 스스로 정리하고 사용하지 않는 블록을 운영체제에 돌려주도록 강제해요. 실패하면 OSError를 발생시켜요.

msvcrt.set_error_mode(mode)

프로그램을 끝낼 수 있는 오류에 대해 C 런타임이 오류 메시지를 쓰는 위치를 바꿔요. mode는 아래 나열된 OUT_* 상수 중 하나 또는 REPORT_ERRMODE여야 해요. 옛 설정이나 오류가 발생하면 -1을 돌려줘요. Python의 디버그 빌드에서만 사용 가능해요.

  • msvcrt.OUT_TO_DEFAULT — 오류 싱크가 앱 타입에 의해 결정됨. Python의 디버그 빌드에서만 사용 가능.
  • msvcrt.OUT_TO_STDERR — 오류 싱크가 표준 오류. Python의 디버그 빌드에서만 사용 가능.
  • msvcrt.OUT_TO_MSGBOX — 오류 싱크가 메시지 상자. Python의 디버그 빌드에서만 사용 가능.
  • msvcrt.REPORT_ERRMODE — 현재 오류 모드 값을 보고. Python의 디버그 빌드에서만 사용 가능.

msvcrt.CrtSetReportMode(type, mode)

MS VC++ 런타임에서 _CrtDbgReport()가 생성한 특정 보고 타입의 목적지(들)을 지정해요. type은 아래 나열된 CRT_* 상수 중 하나여야 해요. mode는 아래 나열된 CRTDBG_* 상수 중 하나여야 해요. Python의 디버그 빌드에서만 사용 가능해요.

msvcrt.CrtSetReportFile(type, file)

CrtSetReportMode()CRTDBG_MODE_FILE을 지정한 후, 메시지 텍스트를 받을 파일 핸들을 지정할 수 있어요. type은 아래 나열된 CRT_* 상수 중 하나여야 해요. file은 지정하려는 파일 핸들이어야 해요. Python의 디버그 빌드에서만 사용 가능해요.

  • msvcrt.CRT_WARN — 즉각적인 주의가 필요 없는 경고, 메시지, 정보.
  • msvcrt.CRT_ERROR — 오류, 복구 불가능한 문제, 즉각적인 주의가 필요한 문제.
  • msvcrt.CRT_ASSERT — 어서션 실패.
  • msvcrt.CRTDBG_MODE_DEBUG — 메시지를 디버거의 출력 창에 씀.
  • msvcrt.CRTDBG_MODE_FILE — 메시지를 사용자 제공 파일 핸들에 씀. 목적지로 사용할 특정 파일이나 스트림을 정의하려면 CrtSetReportFile()을 호출해야 함.
  • msvcrt.CRTDBG_MODE_WNDW — 메시지를 표시하는 메시지 상자를 Abort, Retry, Ignore 버튼과 함께 만듦.
  • msvcrt.CRTDBG_REPORT_MODE — 지정된 타입에 대한 현재 모드를 돌려줌.
  • msvcrt.CRT_ASSEMBLY_VERSIONcrtassem.h 헤더 파일의 CRT Assembly 버전.
  • msvcrt.VC_ASSEMBLY_PUBLICKEYTOKENcrtassem.h 헤더 파일의 VC Assembly 공개 키 토큰.
  • msvcrt.LIBRARIES_ASSEMBLY_NAME_PREFIXcrtassem.h 헤더 파일의 Libraries Assembly 이름 접두사.