Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get PID_MAX macro?

Tags:

c

freebsd

I would like to get the value of the PID_MAX macro present in the file /sys/sys/proc.h.

My current code (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;
}

Return the following error :

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

How is it possible?

Another method to recover the PID_MAX?

like image 683
Momonosoke Avatar asked Oct 18 '25 02:10

Momonosoke


1 Answers

There is no platform-independent method for retrieving the maximum pid value. Under Linux, for example, you can determine the value through the /proc/sys interface

$ sysctl kernel/pid_max
32768

Under FreeBSD, the value is 99999. If you look closely in sys/proc.h, you will notice that the macro PID_MAX is guarded by

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

This is, why you cannot (and should not) use it in userspace programs.

like image 160
Ctx Avatar answered Oct 20 '25 16:10

Ctx



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!