← 포트폴리오로

Watchdog · 직접 해 보기

멈추려던 PID가 다른 프로세스일 수 있었습니다

과열을 감지한 순간과 멈추기를 누르는 순간 사이에 원래 프로세스가 끝나면, 같은 PID가 다른 프로세스에 배정될 수 있습니다.

macOS에는 신원 확인과 신호 보내기를 한 번에 하는 방법이 없습니다. 신호를 보내기 직전에 PID·UID·시작 시각을 다시 읽어 감지 당시와 같을 때만 보내고, 바뀌었으면 processChanged로 멈춥니다.

PID가 다른 프로세스에 재사용되게 한 다음 일시정지를 눌러 보세요. 확인 방식을 바꿔 가며 비교할 수 있습니다.

감지했을 때와 지금의 프로세스 신원
PID프로세스UID시작
4812node dev-server50110:02:13
4812node dev-server50110:02:13

윗줄: 과열을 감지했을 때 · 아랫줄: 지금

PID를 재사용시킨 다음 일시정지를 눌러 보세요.

시뮬레이션macOS 앱이라 브라우저에서 직접 돌릴 수 없어, ProcessController.swift의 판단만 재현했습니다.

← 포트폴리오로