Знание статуса процесса с помощью procf / <pid> / status
Я работаю над солярисом.
Я знаю, что если запущен процесс, существует файл с именем/proc//status
, где это идентификатор процесса, и он содержит поле с именем.
state
В качестве примера я использовал мой процесс оболочки:
> ps
PID TTY TIME CMD
18671 0:01 tcsh
чей идентификатор процесса 18671.
Я написал простую программу на C для извлечения этой информации:
#include
#include
#include
#include
#include
#include
#include
#include
static void get_status (pid_t pid)
{
char procpath[100];
char buf[100];
int pfd;
char State[100];
char Name[100];
prstatus_t * pms;
FILE *proc;
sprintf(procpath, "/proc/%d/status", pid);
proc = fopen(procpath,"r");
if (proc) {
printf("Open Successful\n");
fgets(buf,256,proc); sscanf(buf,"Name:\t%s",Name);
fgets(buf,256,proc); sscanf(buf,"State:\t%c",State);
}
printf("%s",Name);
printf("%s",State);
}
int main(int argc, char **argv)
{
get_status(18671);
}
Это неt производить любой вывод:
> ./a.out
Open Successful
>
В онлайн-материале для procfs говорится, что мы можем простоproc//status
и проверьте состояние процесса.
Но в моем случае этобинарный файл, Я никогда не видел, чтобы это упоминалось где-то, что это двоичный файл.
Есть ли способ, где я мог бы использовать простую программу на C, чтобы получить состояние текущего процесса?
Решение C ++ также будет приемлемым.