如何在程序中获取进程的CPU使用率?

时间:2014-07-17 10:58:50

标签: c linux cpu-usage

我试图在我的代码中获取程序的CPU使用率。我使用下面的代码,但它返回总CPU使用率。有没有办法只获得我的程序的使用?

int FileHandler;
char FileBuffer[1024];
float load;

FileHandler = open("/proc/loadavg", O_RDONLY);
if(FileHandler < 0) {
  return -1; }
read(FileHandler, FileBuffer, sizeof(FileBuffer) - 1);
sscanf(FileBuffer, "%f", &load);
close(FileHandler);
return (int)(load * 100);

1 个答案:

答案 0 :(得分:0)

您可以将popen()ps一起用作命令:

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

FILE *popen(const char *command, const char *mode);
int pclose(FILE *stream);

int main(void)
{
    FILE *cmd;
    char s[64];
    double cpu;

    sprintf(s, "ps --no-headers -p %d -o %%cpu", (int)getpid());
    cmd = popen(s, "r");
    if (cmd == NULL) {
        perror("popen");
        exit(EXIT_FAILURE);
    }
    if (fgets(s, sizeof(s), cmd) != NULL) {
        cpu = strtod(s, NULL);
        printf("%f\n", cpu);
    }
    pclose(cmd);
    return 0;
}