Как получить макрос PID_MAX? - PullRequest
       16

Как получить макрос PID_MAX?

1 голос
/ 30 октября 2019

Я хотел бы получить значение макроса PID_MAX, присутствующего в файле /sys/sys/proc.h.

Мой текущий код (main.c):

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

#include <sys/types.h> /* type pid_t */
#include <sys/proc.h> /* macro PID_MAX */
#include <sys/unistd.h> /* function getpid, getppid */

/*
gcc -Wall -Wextra main.c -o main
./main
*/

int main ()
{
    pid_t pidmax = PID_MAX;

    printf ( "Value = %d\n", pidmax );

    return 0;
}

Вернутьследующая ошибка:

error: 'PID_MAX' undeclared (first use in this function); did you mean 'UID_MAX'?

Как это возможно?

Другой способ восстановить PID_MAX?

1 Ответ

2 голосов
/ 30 октября 2019

Не существует независимого от платформы метода для получения максимального значения pid. Например, в Linux вы можете определить значение через /proc/sys интерфейс

$ sysctl kernel/pid_max
32768

В FreeBSD это значение равно 99999. Если вы внимательно посмотрите на sys/proc.h, вы заметите, что макрос PID_MAX защищен

#ifdef _KERNEL
...
#define PID_MAX 99999
...
#endif

Вот почему вы не можете (и не должны) использовать его в программах пользовательского пространства.

...