2016-10-26 2 views
2

코드를 통해 응용 프로그램을 다시 시작해야하며 배치 파일을 사용하도록 선택했습니다.배치를 사용하여 C++ 콘솔 응용 프로그램을 다시 시작해도 네트워크 연결이 닫히지 않음

taskkill /f /im AudioService.exe 
TIMEOUT 10 
start "AudioService" "AudioService.exe" 

그때 나는 (Poco Library를 사용하여) 코드에서 호출 : 응용 프로그램은이 같은 일괄 생성이 시작되면이 사실을 제외하고 작동합니다, 지금

Poco::Process::Args args; 
Poco::Process::launch(RESTART_SCRIPT_NAME, args); 

을 그 네트워크 연결 응용 프로그램이 다시 시작될 때 Bind() 함수는 실패합니다.

대신 "수동"탐색기에서 파일을 실행하면 예상대로 작동합니다. 응용 프로그램과 네트워크 연결이 끊어집니다.

누군가 이런 일이 발생하는 이유에 대해 힌트를 줄 수 있습니까?

+0

응용 프로그램에 적절한 종료 메커니즘을 구축 정리 보장 할 수 있도록 핸들러가 무엇인지 신호를 찾아 볼 수도 있습니다. 예를 들어, 이벤트 객체를 생성하고 설정이 끝나면 정상적으로 종료 한 다음 이벤트 객체를 설정하는'/ shutdown' 명령 행 옵션을 제공 할 수 있습니다. –

답변

0

응용 프로그램이 핸들을 닫지 않고 닫히면 OS가이를 처리해야합니다. OS가 핸들을 닫으려고 결정할 때 응용 프로그램이 아니라 OS에 달려 있기 때문에 잠시 기다려야합니다.

당신은 당신의 응용 프로그램이 항상 당신이 강제로 죽일 필요가 없도록 잘