-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjobs.c
45 lines (42 loc) · 1.15 KB
/
jobs.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "header.h"
#include "JobStruct.h"
int jobs(int numPar, char *par[], job jobArr[], int *jobIterPtr)
{
// printf("*%d*\n", *jobIterPtr);
for (int i = 0; i < *jobIterPtr; i++)
{
bool run;
if (!jobArr[i].running)
continue;
int pid = jobArr[i].id;
char procFile[1000];
sprintf(procFile, "/proc/%d/stat", pid);
FILE *fd = fopen(procFile, "r");
if (fd == NULL)
run = false;
else
{
char infoStr[1000];
for (int i = 0; fscanf(fd, "%s", infoStr); i++)
{
if (i == 3)
break;
if (i == 2)
{
// printf("Process Status -- %s\n", infoStr);
if (strcmp("T", infoStr) == 0)
{
run = false;
}
else
run = true;
}
}
}
printf("[%d] ", i +1);
if (run)printf("Running ");
else printf("Stopped ");
printf("%s [%d]\n", jobArr[i].name, jobArr[i].id);
}
return 1;
}