구성 파일에서 사용자가 지정한 임의의 다른 프로세스를 호출 할 수 있기를 원하는 응용 프로그램 A가 있습니다.Windows에서 임의의 하위 프로세스를 실행해도 계속 깨끗하게 종료됩니까?
배치 스크립트 B는 사용자가 A로 호출하고자하는 프로세스 중 하나입니다. B는 환경 변수를 설정하고 메시지를 표시하며 컴파일러 C를 호출하여 작업을 수행합니다.
Windows는 임의 프로세스가 정상적으로 종료되도록하는 표준 방법을 제공합니까? A가 콘솔에서 실행되고 CTRL + C를받는다고 가정하십시오. 이것을 B와 C에 전달할 수 있습니까? A가 창에서 실행되고 사용자가 창을 닫으려고하면 B와 C를 취소 할 수 있습니까?
TerminateProcess는 옵션이지만 아주 좋은 것은 아닙니다. A가 B에서 TerminateProcess를 사용하면 C는 계속 실행됩니다. C가 오래 실행되는 경우 문제가 발생할 수 있습니다. C의 첫 번째 인스턴스가 여전히 비밀리에 작동하는 동안 동일한 파일에서 작동하도록 C의 다른 인스턴스를 시작할 수 있기 때문입니다. 또한 TerminateProcess는 깨끗한 종료를 초래하지 않습니다.
GenerateConsoleCtrlEvent는 훌륭하게 들리지만 모든 것이 콘솔에서 실행 중일 때 작동 할 수 있지만 문서에 자신의 콘솔에만 Ctrl + C를 보낼 수 있다고되어 있기 때문에 A가 창에서 실행 중이면 도움이되지 않습니다.
Windows에서 SIGINT와 동일한 기능이 있습니까? 나는이 기사를 찾으려고한다 : http://www.cons.org/cracauer/sigint.html for Windows.
+1 좋은 질문입니다. 웃기는 답변이 없습니다 ... 저는 Win32에서와 비슷한 신호 메커니즘을 알지 못합니다. 자식 프로세스에 통보해야 할 때 GUI 애플리케이션에 WM_CLOSE 메시지를 게시했습니다. 콘솔 응용 프로그램의 경우 입력 및 출력 스트림을 기본 응용 프로그램에 연결하여 만든 응용 프로그램의 경우이를 종료하고 싶을 때 입력 스트림을 닫았습니다. 아이들의 아이들에 관해서는, 나는 그들의 의존성을 정리하기 위해 직접적인 아이들에게 의존했다. :). –