我试图在我的代码中获取程序的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);
答案 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;
}