アプリケーションを実行する前に、特定のプロセスIDをLinuxに強制的に使用する方法があるかどうか疑問に思っていました。プロセスIDを事前に知る必要があります。
6 に答える
多くの人がすでに示唆しているように、PID を直接設定することはできませんが、通常、シェルには最後にフォークされたプロセス ID を知る機能があります。
たとえば、bash では、バックグラウンドで実行可能ファイルを起動し (追加&
)、その PID を変数で見つけることができます$!
。例:
$ lsof >/dev/null &
[1] 15458
$ echo $!
15458
プロセスに特定の PID を強制的に使用する方法はありません。ウィキペディアが言うように:
プロセス ID は通常、0 から始まり、システムごとに異なる最大値まで順番に割り当てられます。この制限に達すると、割り当ては 300 で再開され、再び増加します。Mac OS X および HP-UX では、割り当ては 100 から再開されます。ただし、このパスと後続のパスでは、プロセスにまだ割り当てられている PID はスキップされます。
fork()
目的の PID を持つ子を取得するまで、新しい子プロセスを作成するために繰り返し呼び出すことができます。頻繁に呼び出すことを忘れないでください。そうしないwait()
と、ユーザーごとのプロセス制限にすぐに達してしまいます。
この方法は、OS が新しい PID を順番に割り当てることを前提としています。Linux 3.3 で。
この方法に対する利点はns_last_pid
、ルート権限が必要ないことです。
Linux システムのすべてのプロセスはfork()によって生成されるため、特定の PID を強制する方法はありません。