Получение информации о процессоре из идентификатора процесса - PullRequest
4 голосов
/ 17 августа 2010

Если бы кто-нибудь мог , пожалуйста, , помогите мне, это было бы здорово:)

Это кажется трудным.Начиная с идентификатора процесса, я должен иметь возможность получить:

  1. Сколько ЦП занимает процесс в%
  2. Как долго процесс использует ЦП

Это должно быть написано в Какао / Objective-C или C. Это также должно работать на Тигре через Снежного барса.

Спасибо!

1 Ответ

1 голос
/ 17 августа 2010

Грубым способом было бы создать команду popen и получить некоторый вывод из ps.

Т.е. так:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void get_process_info(int pid) {
  char ps_cmd[256];
  sprintf(ps_cmd, "ps -O %%cpu -p %d", pid); // see man page for ps
  FILE *fp = popen(ps_cmd, "r"); 
  if (fp) {
    char line[4096];
    while (line == fgets(line, 4096, fp)) {
      if (atoi(line) == pid) {
        char dummy[256];
        char cpu[256];
        char time[256];

        //   PID  %CPU   TT  STAT      TIME COMMAND
        // 32324   0,0 s001  S+     0:00.00 bc

        sscanf(line, "%s %s %s %s %s", dummy, cpu, dummy, dummy, time);
        printf("%s %s\n", cpu, time); // you will need to parse these strings

        pclose(fp);
        return;
      }
    }
    pclose(fp);
  }
}

int main() {
  get_process_info(32324);
  return 0;
}
...