Windows가 프로세스를 정확히 어떻게 종료합니까?


10

Windows에서 프로세스가 종료되는 방식에 익숙하지 않습니다. Linux에서 "warm"kill은 신호 핸들러를 인스턴스화하여 프로세스가 처리 할 수있는 신호 (15)를 보냅니다. 콜드 킬은 프로세스를 강제 종료하여 OS가 처리하는 신호 (9)입니다.

Windows에서 프로세스를 어떻게 "kill"할 수 있습니까? OS와 프로세스에서 어떻게 처리합니까? OS는 어떤 작업을 수행합니까? 킬 / 클로즈 요청에 응답하는 크로스 플랫폼 방법이 있습니까?


1
독자의 경우 : 신호 15는 SIGTERM, 9는 SIGKILL입니다.
user1686

질문에 대한 답변이 있으면 답변을 수락하십시오.
Oliver

답변:


11

"작업 끝내기"(및 taskkill)가 WM_CLOSE메시지를 프로그램 창 에 게시하는 것으로 나타납니다 . ( ×"닫기"단추 를 클릭해도 마찬가지입니다 .) 일정 시간 내에 프로그램이 종료되지 않으면 프로그램을 강제 종료하라는 메시지가 표시됩니다.

"Kill Process"를 taskkill /f사용하십시오 TerminateProcess().


1
+1, WM_CLOSE가 앱으로 전송되었습니다. X 시간이 사용자에게 강제 종료를 요청한 후 Windows는 스케줄러에서 프로세스를 제거하고 모든 핸들을 닫고 (커널이 해당 핸들 중 하나를 처리하는 경우 프로세스를 트립 할 수 있음) 메모리 공간을 회수합니다 ( 정말 짧은 버전입니다) 프로세스의).
Chris S

세 번째 방법은 디버거 ntsd -p <pid> -c q를 사용하는입니다 ntsd. 프로그램이 그런 식으로 죽일 때 어떤 일이 발생하는지 잘 모르겠습니다. ( @ 크리스 찌른다 )
user1686

5
프로그램에 창이없는 경우 어떻게됩니까?
IttayD

1
@IttayD : 그런 다음 작업 관리자에 "작업 끝내기"를 사용할 수있는 항목이 없습니다. 방금 시도했지만 taskkill"이 프로세스는 강제로 종료 될 수 있습니다 (/ F 옵션 사용)". 네, 남은 유일한 선택은입니다 TerminateProcess().
user1686 2016 년

1
@IttayD : Windows에서 서비스 (데몬)는 사용자 응용 프로그램과 다르게 작성됩니다. Service Manager로부터 상태 쿼리 및 제어 요청을 수신 할 수 있으므로 정상적으로 중지 할 수 있습니다.
user1686

0

Sysinternals (현재 Microsoft의 일부)는 명령 줄에서 로컬 시스템 또는 원격 시스템의 프로세스를 종료하는 데 사용할 수있는 pskill 유틸리티를 제공 합니다.

GUI 환경에서 Windows의 프로세스를 종료하는 일반적인 방법은 작업 관리자를 사용하는 것입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.