To restore a checkpointed process with CRIU the
process ID (PID) has to be the same it was during checkpointing. CRIU
uses
/proc/sys/kernel/ns_last_pid
to set the PID to one lower as the process to be restored just before
fork()
-ing into the new process.
The same interface (/proc/sys/kernel/ns_last_pid
) can also be used
from the command-line to influence which PID the kernel will use for the
next process.
# cat /proc/sys/kernel/ns_last_pid
1626
# echo -n 9999 > /proc/sys/kernel/ns_last_pid
# cat /proc/sys/kernel/ns_last_pid
10000
Writing '9999' (without a 'new line') to /proc/sys/kernel/ns_last_pid
tells the kernel, that the next PID should be '10000'. This only works
if between after writing to /proc/sys/kernel/ns_last_pid
and forking
the new process no other process has been created. So it is not possible
to guarantee which PID the new process will get but it can be
influenced.
There is also a posting which describes how to do the same with C: How to set PID using ns_last_pid