본문 바로가기
Programming/Python

프로세스의 실행과 종료하기 - Ex. 001 - calc.exe의 정체

by The Programmer 2025. 5. 22.

1. Introduction

 

( 중/고급 : 제가 쓰려고 참고용으로 올려둡니다. )

 

프로세스의 실행과 종료하기 - Ex. 001 - calc.exe의 정체.

 

 

2. Code

 

import subprocess
import time
import os

 

# 보호되어 있는 CalculatorApp.exe 프로그램에 매핑되어 실행됨.

process = subprocess.Popen("calc.exe")   

 

# 약간의 지연 시간 추가.

time.sleep(7)

 

# CalculatorApp.exe 프로세스를 직접 종료

os.system("taskkill /F /IM CalculatorApp.exe")   


3. Result

 

계산기 프로그램이 실행되고

지연시간을 기다린 다음

계산기 프로그램 프로세스가 종료됨.

 

 

4. Notes

 

■ 일반적인 프로세스의 종료 : 일반적인 프로세스의 종료에는 다음처럼 처리한다.

 

프로세스.terminate() or 

프로세스.kill()

 

import subprocess
import time

# import os
# import psutil

myProc = subprocess.Popen("calc.exe", shell=True)

# shell 부분 추가는 비권장 사항임.

# 일괄처리를 위해서 for loop 안에 List.append()를 사용해서

# 리스트에 저장도 가능하나 calc.exe와 같은 몇몇 프로그램에서는 프로세스 종료에 문제가 생길 수 있다.


time.sleep(5)

myProc.kill()

# 보통은 작동되나 매핑되어 다른 프로그램으로 실행되는 경우에는 작동되지 않는다. 이제 어쩔? ^.^;

print("프로그램이 정상 실행되었습니다만! ^.^; ")

print("계산기 프로그램이 종료되지 않습니다. ^.^; ")

 

 

■ 응용 연습 1 : psutil 모듈로 처리하는 방법.

 

모듈 먼저 추가 설치해야 함.

 

import psutil

def terminate_process(pid):
    try:
        process = psutil.Process(pid)
        process.terminate()  
# 프로세스를 종료
        print(f"PID {pid} 프로세스를 종료했습니다.")
    except psutil.NoSuchProcess:
        print(f"PID {pid} 프로세스를 찾을 수 없습니다.")
    except psutil.AccessDenied:
        print(f"PID {pid} 프로세스를 종료할 권한이 없습니다.")
    except Exception as e:
        print(f"오류 발생: {e}")

# 종료할 프로세스의 PID를 입력하세요
pid_to_terminate = int(input("종료할 프로세스의 PID 입력: "))
terminate_process(pid_to_terminate)

 

 

■ 응용 연습 2 :서브프로세스로 실행하고 아이디 찾기

 

calc.exe의 경우에 그 결과는?

 

import psutil
import subprocess
import time

# 계산기 실행
process = subprocess.Popen("calc.exe")
print(f"계산기 실행됨. PID: {process.pid}")

# 잠시 대기 후 프로세스 종료
time.sleep(7)  # 7초 대기
try:
    calc_process = psutil.Process(process.pid)
    calc_process.terminate()  
# 프로세스 종료
    print("계산기 프로세스를 종료했습니다.")
except psutil.NoSuchProcess:
    print("계산기 프로세스를 찾을 수 없습니다.")
except psutil.AccessDenied:
    print("계산기 프로세스를 종료할 권한이 없습니다.")
except Exception as e:
    print(f"오류 발생: {e}")

 

 

■ 응용 연습 3 : 폴더 접근

 

calc.exe를 실행하면 Windows 11에서는 CalculatorApp.exe이 실행된다. 이 앱은 다음 폴더에 존재한다.

 

C:\Program Files\WindowsApps\Microsoft.WindowsCalculator_11.x.x.....

 

그런데 해당 폴더는 접근이 금지되어 있다. 보통은.

 

이 폴더의 소유자는 TrustedInstaller. 소유자를 변경하는 문제는 중대한 문제를 야기할 수 있다. 원상복구가 안 될 수도 있다. 어떻게 할 것인가? ^.^;

 

 

■ 응용 연습 4 :  ID로 프로세스 검색

 

이번에는 패스. ^.^;

 

 

5. Files

 

Not yet! Very short! 

^.^;

 

 

6. Ref.

 

 

Happy Programming!

^.^;

 

 

 

'Programming > Python' 카테고리의 다른 글

문자열 함수 - 001  (0) 2025.05.25
Color Picker 연습 - 001  (0) 2025.05.22
Processing PythonMode Ex - 002  (0) 2025.04.29
Python List 연습 - 002  (0) 2025.04.20
Processing PythonMode Ex. 001  (0) 2025.03.29