현재 서브 프로세스 (System.Diagnostics.Process
)를 실행중인 서비스가 있습니다. 각 하위 프로세스는 몇 시간 동안 실행될 수 있으며 미리 정의 된 특정 상태 ("시작", "작업", "정리"등)로되어있을 수 있습니다. 완전히 미리 정의되어 있으며 각 상태에 첨부 된 사용자 정의 데이터는보고되지 않아야합니다. 각 프로세스는 개별 Windows 서비스가 될 수 없습니다 (Windows 서비스 상태보다 가능한 상태가 더 많음). 어떻게 든이 상태를 부모 서비스에보고해야합니다. 모든 프로세스가 동일한 Windows 시스템에서 실행 중입니다.상위 서비스에 서브 프로세스 상태보고
다른 프로세스 (서비스가 시작한 프로세스가 아닌)에서 서브 프로세스 상태를 쿼리하고 해당 서브 프로세스의 각 서브 프로세스 상태에 대한 상위 서비스를 업데이트 할 수 있어야합니다. 각 프로세스는 고유 한 ID를 가지므로 다른 프로세스는 프로세스 자체를 관리하지 않고도 상태를 쉽게 읽을 수 있습니다. 모든 프로세스는 각 하위 프로세스가 자신을 식별 할 수있는 고유 한 ID를 할당받는 구성 파일을 공유합니다. 나는과 같이 그 일을 생각했습니다
- 서비스 (
RedirectStandardOutput = true
), 출력의 각 줄을 읽고 - 모든 하위 프로세스를 쓰기 (
STATECHANGE:state
) "특별한"라인을 잡기에 리디렉션 하위 프로세스 '표준 출력 '상태가 변경 될 때마다 사전 정의 된 위치의 파일에 상태를 표시하고 서비스 종료시 해당 파일을 삭제하십시오.
나는 오래 전에 해결 된 문제에 대한 해결책을 찾고자하는 것 같아서 그 해결책을 찾지 못했습니다. 그러한 상태보고를 수행하는 "좋은"방법이 있습니까?
예,이 모든 것이 Windows에서 실행 중이며이를 명확히하기 위해 제 질문을 수정했습니다. 이게 내가 필요한 것 같아. 고마워! –