What is the maximum value of the Process ID?
Also, is it possible to change a Process ID?
On Linux, you can find the maximum PID value for your system with this:
$ cat /proc/sys/kernel/pid_max
This value can also be written using the same file, however the value can only be extended up to a theoretical maximum of 32768 for 32 bit systems or 4194304 for 64 bit:
$ echo 32768 > /proc/sys/kernel/pid_max
It seems to be normative practice on most 64 bit systems to set this value to the same value as found on 32 bit systems, but this is by convention rather than a requirement.
From man 5 proc
:
/proc/sys/kernel/pid_max This file (new in Linux 2.5) specifies the value at which PIDs wrap around (i.e., the value in this file is one greater than the maximum PID). The default value for this file, 32768, results in the same range of PIDs as on earlier kernels. On 32-bit platfroms, 32768 is the maximum value for pid_max. On 64-bit systems, pid_max can be set to any value up to 2^22 (PID_MAX_LIMIT, approximately 4 million).
And no, you cannot change the PID of a running process. It gets assigned as a sequential number by the kernel at the time the process starts and that is it's identifier from that time on. The only thing you could do to get a new one is have your code fork a new process and terminate the old one.
Other answers have explained
/proc/sys/kernel/pid_max
for Linux andBut the question didn't specify an operating system. So here are some others:
pidmax
in /etc/system
— that defaults to 30,000 and that can be set anywhere between 266 and 999,999. Note that this is not max_nprocs
, which is a kernel tunable parameter with a subtly different function.process_id_min
and process_id_max
prescribe the range of allowable process IDs.On FreeBSD the value of PID is between 0 and 99999 according to intro(2)
(link). Here's a quote from the manual:
Process ID.
Each active process in the system is uniquely identified by a non-negative integer called a process ID. The range of this ID is from 0 to 99999.
If you want to read the source code on your own then PID_MAX
is defined in sys/sys/proc.h
(link).