Solaris 시스템에서 C/C++로 프로그래밍 방식으로 프로세스 정보를 얻는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/445382

문제

Solaris에서 시스템 및 프로세스 정보를 수집하는 방법에 대한 C/C++ 라이브러리와 문서가 있습니까?

명령줄 도구를 구문 분석할 수 있지만 작업을 더 쉽게 수행할 수 있는 라이브러리를 사용하고 싶습니다.

감사해요

편집하다: 정보를 수집하기 위해 /proc 가상 디렉터리를 사용하는 것이 제안되었지만 필요한 모든 데이터에 대해 일종의 사용자 지정 구문 분석을 구현해야 한다는 점에서 명령줄 도구를 구문 분석하는 것보다 낫지 않습니다.

저는 c 기반 시스템 API를 통해 이 정보를 제공하는 Windows 또는 MacOS용 c 라이브러리를 찾고 있지만 Google에서는 운이 없습니다.

도움이 되었습니까?

해결책

이런 종류의 정보를 얻을 수 있습니다 kstat API.

man -s 3KSTAT  kstat

OpenSolaris에서 어떻게 사용되는지 확인할 수 있습니다. vmstat 그리고 iostat 원천.

processus에 대한 정보는 다음을 참조하십시오. 추신.

다른 팁

솔라리스는 /proc 가상 디렉터리, 파일 시스템 I/O 기능을 사용하여 프로세스에 대한 모든 종류의 정보를 수집할 수 있습니다.

CrashWorks가 제안한 대로 /proc 가상 디렉토리를 사용하겠습니다.저는 aux와 Linux 모두에서 이 작업을 수행했습니다.명심해야 할 한 가지는 Linux에서 /proc 디렉토리를 사용할 때 파일 형식이 커널마다 다양하다는 것입니다.

솔라리스 측의 상황이 어떤지는 모르겠지만 이는 귀하의 솔루션이 한 솔라리스 플랫폼에서 다른 솔라리스 플랫폼으로 이식 가능하지 않다는 것을 의미할 수 있습니다.

~는 어때 getrusage()?

나는 확실히 이 주제에 대한 전문가는 아니지만 프로세스의 스냅샷을 찍어야 하는 지난 학기 과제에서 매우 유사한 작업을 수행했습니다.불행하게도 이 방법을 사용하려면 커널을 파헤쳐야 하는데 이는 아마도 여러분이 원하는 것이 아닐 것입니다.

나는 이것을 찾았다 기사 도움이 되는.

어쨌든 여기에 몇 가지 단편이 있습니다.

 write_lock_irq(&tasklist_lock);
  for_each_process(task) {

    if (system_or_user == 0)
      print_mem_user(task);
    if (system_or_user == 1)
      print_mem_system(task);
  }
  write_unlock_irq(&tasklist_lock);

일부 데이터 구조를 잠그면 커널이 중단되는 경우가 있습니다."for_each_process"는 어딘가에 정의된 매크로이지만 어떻게 작동하는지 기억이 나지 않습니다. D:

static void print_mem_system(struct task_struct *task)
{
  struct mm_struct *mm;

  if (task -> mm == NULL){ // this is how you distinguish system processes from user processes
    myarraypid[totalnumberofprocesses] = task -> pid; // store process id's into myarraypid[], which you can later copy back to user space for printing/display. Additional information would be found in a "task_struct" which is Linux's implementation of a process. 



  }


}

내 반 친구 중 일부는 다른 접근 방식을 취하여 "ps" 유틸리티의 소스에 대해 자세히 알아봤습니다.저는 Linux 2.6.18-92.1.13.e15에서 작업하고 있었던 것 같습니다.부인 성명:이것은 나에게 효과적이지만 귀하의 마일리지는 다를 수 있습니다.나는 벽에서 벗어날 수도 있고 당신을 잘못된 방향으로 이끌고 싶지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top