pidfdはプロセスIDの重複を防ぐ
Linuxでは、pid は基本的に純増するが、 /proc/sys/kernel/pid_max を越えると使われなくなっている pid を再利用する。古いカーネルでは pid_max に 32768 が設定されていて小さすぎる場合もあるが、手元のLinux 6.9.6では十分に大きい値になっていた。
$ cat /proc/sys/kernel/pid_max4194304これは 0x400000 (22bit+1)なので十分あるようにみえるけど、長時間運用する場合は再利用が発生する。そうするとpidfdが必要な理由で書いたような事故が起きてしまって困るので、 pidfd はプロセスIDの範囲を閉じ込めることによって再利用を回避するためにある。
ではPlan 9ではどうなのかというと、Plan 9のpidは再利用されないのでこういった問題は起きない。