[질문]윈9x 프로세스 상태를 볼려면?
글쓴이: psycoder / 작성시간: 수, 2004/05/26 - 6:23오전
자신을 업데이트하는 프로그램을 만들고 있는데요.. 잘 아시다시피 업데이트 순서는 다음과 같습니다.
1. 업데이트 명령을 받으면 서버에서 업데이트 버전정보 파일을 받아 새버전인지 체크
2. 새버전이면 서버에서 업데이트 프로그램을 받아서 실행시킨후 자신은 종료
3. 위에서 실행한 업데이트 프로그램이 새버전을 받아서 실행한후 자신은 종료
이런 식인데요..문제는 2번에서 발생합니다.
업데이트 프로그램을 받는거 까진 되는데 이걸 실행을 못합니다.
그리고 9x계열에서만 이런 현상이 발생하구요..(항상은 아니고 가끔 발생합니다.) 또 이렇게 되면 재부팅하기 전까지 절대 프로세스 강제종료도 안됩니다.
관련 소스는 다음과 같습니다.(지면상 update.exe를 다운받는건 생략했구요.. 받아온후 실행후 자신은 종료하는 것만입니다.)
Sleep(5000); while(cnt<30) { GetWindowsDirectory(update, sizeof(update)); strcat(update, "\\update.exe"); if(_access(update, 0)!=-1) { WinExec(update, SW_HIDE); break; } cnt++; Sleep(1000); } closesocket(csock); WSACleanup(); ExitProcess(0);
여기서 Sleep()과 while()을 넣준건 이걸 않해주면 잘 안되서 꽁수로 제가 집어 넣은 겁니다.
여기서 문제될게 있나요?
그리고 도데체 프로세스가 뭘하길래 종료도 안되는지 알려면 어떻게 하면 될까요? (예를들어 strace와 같은 툴이 있을까요?)
Forums:
M$윈도우 질문은www.devpia.com
M$윈도우 질문은
www.devpia.com
제 생각에는....
일단 WinExec 에 대한 return 값을 Check 해주셔야 할것 같습니다.
그리고, Process List 를 얻어서 현재 Processor 가 정상 작동 여부를 확인하셔야 될것 같습니다.
95 이상 이시면 Process List 는 Tool Help Function 을 이용하시면 얻으실수 있습니다.
댓글 달기