プロセスIDの最大値は何ですか?
また、プロセスIDを変更することは可能ですか?
プロセス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を変更することはできません。プロセスの開始時にカーネルによって連続番号として割り当てられ、それはその時点からの識別子です。新しいプロセスを取得するためにできることは、コードに新しいプロセスをフォークさせ、古いプロセスを終了させることだけです。
他の答えは説明しました
/proc/sys/kernel/pid_max
Linuxおよびしかし、質問ではオペレーティングシステムを指定していません。そのため、他にもいくつかあります。
pidmax
in /etc/system
)で、デフォルトは30,000で、266〜999,999の間で設定できます。これはではないことに注意してください。これはmax_nprocs
微妙に異なる機能を持つカーネル調整可能パラメーターです。process_id_min
、process_id_max
規定します。FreeBSDでは、intro(2)
(link)によるとPIDの値は0〜99999 です。マニュアルからの引用です:
プロセスID。
システム内のアクティブな各プロセスは、プロセスIDと呼ばれる負でない整数によって一意に識別されます。このIDの範囲は0〜99999です。
自分でソースコードを読みたい場合PID_MAX
は、sys/sys/proc.h
(link)で定義されています。