プロセスIDの最大値はいくつですか?
また、プロセスIDを変更することはできますか?
承認された回答:
Linuxでは、次の方法でシステムの最大PID値を見つけることができます。
$ cat /proc/sys/kernel/pid_max
この値は同じファイルを使用して書き込むこともできますが、値を拡張できるのは、32ビットシステムの場合は理論上の最大値32768まで、64ビットシステムの場合は4194304までです。
$ echo 32768 > /proc/sys/kernel/pid_max
ほとんどの64ビットシステムでは、この値を32ビットシステムで見られるのと同じ値に設定するのが一般的な方法のようですが、これは要件ではなく慣例によるものです。
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).
いいえ、実行中のプロセスのPIDを変更することはできません。プロセスの開始時にカーネルによって連番として割り当てられ、それ以降は識別子になります。新しいプロセスを取得するためにできることは、コードに新しいプロセスをフォークさせ、古いプロセスを終了させることだけです。