CreateToolhelp32Snapshot을 써서 모든 프로세스가 아닌 특정 프로세스만의 쓰레드 정보를 얻을 수 있을 까요?
글쓴이: shkmanse / 작성시간: 목, 2011/05/12 - 11:24오전
제목이 전부이긴한데;
보통 CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0) 이렇게 써서 프로세스들의 쓰레드 정보 전부를 가지고 있다가
pid로 검색해 특정 프로세스의 쓰레드 정보를 가지고 왔었는데요
이렇게 말고 특정 pid를 알고 있다면 모든 쓰레드 정보를 가지고 오지 말고(여기서는 두번째 파라미터가 0을 넣어서
인듯한데,,그곳에 특정 pid넣어도 다 가져온다는;;)
특정 pid의 쓰레드 정보들만 가지고 오게 할 수 있는 방법이 없을까요?
아시는 분 조언 부탁드리겠습니다ㅠ
Forums:
http://msdn.microsoft.com/en-
http://msdn.microsoft.com/en-us/library/ms682489%28v=vs.85%29.aspx
첫번째 인자가 TH32CS_SNAPHEAPLIST, TH32CS_SNAPMODULE, TH32CS_SNAPMODULE32, TH32CS_SNAPALL인 경우에만 특정프로세스를 지정할수 있습니다. TH32CS_SNAPTHREAD이면 pid는 무시되고 시스템전체 쓰레드를 모두 가져온다고 되어 있네요. THREAD32의 th32OwnerProcessID필드를 검사해서 특정 프로세스에 속하는지 보라고 되어 있군요.
그러므로 지금 하고 있는 방법이 최선인듯 한데요.
이럴 수 밖에 없나보군요; 시스템상에서 돌고있는
이럴 수 밖에 없나보군요; 시스템상에서 돌고있는 프로세들이 많다고 가정했을 때 쓰레드도 만만치 않게 많아서 모든 쓰레드들을
가져오는 저 API에서 CPU 점유율이 순간적으로 튀는 것 같아 질문했었던 건데 ,, 어쩔 수 없나보군요 ㅠ 다른 방법을 찾아봐야 겠네요
암튼 답변 감사드립니다^^
다른방법으로는 직접 커널의 process list에
다른방법으로는 직접 커널의 process list에 접근하는 겁니다.
이게 어떤 환경에서 개발하시는가에 따라 다른데, cpu 점유량은 덜 사용하실 수 있을겁니다.
다른방법으로는 직접 커널의 process list에
다른방법으로는 직접 커널의 process list에 접근하는 겁니다.
이게 어떤 환경에서 개발하시는가에 따라 다른데, cpu 점유량은 덜 사용하실 수 있을겁니다.
댓글 달기