프로세스 핸들이란 무엇입니까?


답변:


25

프로세스 핸들은 Windows에 대한 프로세스를 식별하는 정수 값입니다. Win32 API는 이들을 HANDLE이라고 부릅니다. 창 핸들을 HWND라고하며 모듈 HMODULE을 처리합니다.

프로세스 내부의 스레드에는 스레드 핸들이 있으며 파일 및 기타 리소스 (예 : 레지스트리 키)에도 핸들이 있습니다.

작업 관리자에 표시되는 핸들 수는 " 프로세스 개체 테이블의 개체 핸들 수 "입니다. 실제로 이것은이 프로세스가 연 모든 핸들의 합계입니다.

리소스에 대한 핸들을 해제하지 않으면 다른 사람이 해당 리소스에 액세스하지 못할 수 있습니다. 따라서 Windows에서 파일이 사용 중이라고 주장하여 파일을 삭제할 수없는 경우가 있습니다 ( 핸들 누출 및 프로세스 탐색기에 대한이 문서를 확인하십시오 ).

또한 다양한 핸들에는 프로세스 별 제한이 있습니다. 여기 예가 있습니다.

일반적으로 핸들을 열고 닫지 않으면 메모리 누수와 유사합니다. 무슨 일이 일어나고 있는지 알아 내고 고쳐야합니다. 핸들 누수에 대한 좋은 CodeProject 기사가 있습니다 .


2

Handle은 객체를 처리하는 데 사용되는 정수 값입니다. 예를 들면 다음과 같습니다.

int handle = open( "foo.txt", OTHER_STUFF_HERE );

open() is is System Call은 후속 시스템 호출 (read (2), write (2), lseek (2), fcntl (2) 등)에 사용하기 위해 작은 음이 아닌 정수인 핸들을 반환합니다.

Windows 핸들은 Unix 파일 디스크립터 (FD)와 매우 유사합니다.


Windows open()syscall은 더 이상 사용되지 않습니다 -docs.microsoft.com/en-gb/cpp/c-runtime-library/reference/open
yoniLavi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.