2009-07-29 2 views

답변

3

아마도 GetThreadTimes을 사용하면 도움이 될까요?

스레드가 다른 실행 파일에 속하는 경우, 즉의 라인에 뭔가 (테스트되지 않음) 것 정교하게하려면 :

// Returns true if thread times could be queried and its results are usable, 
// false otherwise. Error handling is minimal, considering throwing detailed 
// exceptions instead of returning a simple boolean. 
bool get_remote_thread_times(DWORD thread_id, FILETIME & kernel_time, FILETIME & user_time) 
{ 
    FILETIME creation_time = { 0 }; 
    FILETIME exit_time = { 0 }; 
    HANDLE thread_handle = OpenThread(THREAD_QUERY_INFORMATION, FALSE, thread_id); 
    if (thread_handle == INVALID_HANDLE) return false; 

    bool success = GetThreadTimes(thread_handle, &creation_time, &exit_time, &kernel_time, &user_time) != 0; 

    CloseHandle(thread_handle); 
    return success; 
} 
1

난 당신이 여기에 윈도우에 대한 요구하고 확신하지만 완전성을 위해,이 유닉스 시스템에서 할 수있는 한 가지 방법을 설명 할 것이다.

/proc 파일 시스템에는 시스템의 실행중인 모든 프로세스에 대한 정보가 들어 있습니다. 이 디렉토리에서 시스템의 모든 프로세스 (pid로 이름 지어진)에 대한 하위 디렉토리를 찾을 수 있습니다.이 디렉토리의 각각 안에 stat라는 파일이 있습니다. 'man proc'을보고 "stat"항목을 검색하십시오. 이 파일에는 많은 정보가 들어 있지만이 필드를 사용하면이 프로세스에서 소비 한 사용자 및 커널 모드 시간을 확인할 수 있습니다.

"지식"이라는 프로세스의 하위 디렉토리를 찾으십시오. 여기에서는 외부 프로세스에 의해 생성 된 모든 하위 프로세스를 찾을 수 있습니다. 각각에 stat 파일이 있습니다.

관련 문제