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 |