프로세스 핸들이란 무엇입니까? 통해 실행중인

프로세스 핸들이란 무엇이며 작업 탐색기의 “핸들 수”속성을 통해 실행중인 프로세스에 대해 무엇을 알 수 있습니까?

여기에 이미지 설명을 입력하십시오



답변

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

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

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

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

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

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


답변

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)와 매우 유사합니다.